Python练习题——快乐数字
题目来源:Python语言程序设计(中国大学MOOC)
授课老师:嵩天、黄天羽、礼欣
题目描述:
编写一个算法来确定一个数字是否“快乐”。 快乐的数字按照如下方式确定:从一个正整数开始,用其每位数的平方之和取代该数,并重复这个过程,直到最后数字要么收敛等于1且一直等于1,要么将无休止地循环下去且最终不会收敛等于1。能够最终收敛等于1的数就是快乐的数字。
例如:19是一个快乐数字,计算过程如下:
• 1^2+9^2=82
• 8^2+2^2=68
• 6^2+8^2=100
• 1^2+0^2+0^2=1
要求:当输入快乐的数字时,输出True,否则输出False。
题目分析:
将数字n按位转化为列表,然后循环求元素的平方和,只至结果n==1 or n ==4;
建议百度快乐数的循环结构。
非快乐数总是进入下列重复数列中:
4 → 16 → 37 → 58 → 89 → 145 → 42 → 20 → 4
例如非快乐数8、14:
8 → 64 → 52 → 29 → 85 → 89 → 145 → 42 → 20 → 4
14 → 17 → 50 → 25 → 29 → 85 → 89 → 145 → 42 → 20 → 4
例如快乐数7:
7 → 49 → 97→ 130 → 10 → 1
在十进位下,100以内的快乐数有(OEIS中的数列A00770) :1, 7, 10, 13, 19, 23, 28, 31, 32, 44, 49, 68, 70, 79, 82, 86, 91, 94, 97, 100。
Python代码:
def isHappy(n):
if n is None: return False
while n != 1 and n != 4:
nums = list(str(n))
n = 0
for i in nums:
n += int(i) ** 2
# 循环结束,返回结果
if n == 1: return True
if n == 4: return False
if __name__ == '__main__':
print(isHappy(input()))
Python练习题——阶乘累计求和
题目来源:Python语言程序设计(中国大学MOOC)
授课老师:嵩天、黄天羽、礼欣
题目描述:
获得用户输入的整数n,输出 1!+2!+…+n!的值。
如果输入数值为0、负数、非数字或非整数,输出提示信息:输入有误,请输入正整数。
题目分析:
递归思想,关键在于基例和链条的观察。
Python代码
import sys
sys.setrecursionlimit(5000) #修改为5000
def delnum(n):
if n == 1:
return 1
else:
return n*delnum(n-1)
def getsum(k):
sum = 0
if k == 0:
return 0
else:
for j in range(1, k+1):
sum += delnum(j)
return sum
if __name__ == '__main__':
num_str = input()
if num_str.isdigit():
a = int(num_str)
if a > 0:
print(getsum(a))
else:
print('输入有误,请输入正整数')
else:
print('输入有误,请输入正整数')
Python练习题——成绩转换(百分制到五级制的转换)
题目描述:
成绩分数百分制转为五级制的判断输出(建议使用异常处理try-except-else-finally)。
具体要求如下:
1)输入一个[0-100]内成绩数据,输出相应等级(A、B、C、D、E),如输入为99,第一行输出为“输入成绩属于A级别。”;
2)当输入数据为其他字符或者超过范围,则输出“输入数据有误!”;
3)当成绩等级为A、B、C、D,则换行输出“祝贺你通过考试!”;
4)使用finally实现无论输入任何数据,均在最后输出“好好学习,天天向上!”
思路:
在问题描述里已经很清楚的给出了建议,首先写好异常处理框架,然后填写各部分就好,有一点要注意分数时包括整数和小数,例如99.9分。
python代码
if __name__ == '__main__':
try:
scroe = eval(input())
if scroe >= 0 and scroe <= 100:
if scroe >= 90:
print('输入成绩属于A级别。')
elif scroe >= 80:
print('输入成绩属于B级别。')
elif scroe >= 70:
print('输入成绩属于C级别。')
elif scroe >= 60:
print('输入成绩属于D级别。')
else:
print('输入成绩属于E级别。')
else:
print('输入数据有误!')
except:
print('输入数据有误!')
else:
if scroe >= 60:
print('祝贺你通过考试!')
finally:
print('好好学习,天天向上!')