10. 考试周

1. 快乐的数字
编写一个算法来确定一个数字是否“快乐”。 快乐的数字按照如下方式确定:从一个正整数开始,用其每位数的平方之和取代该数,并重复这个过程,直到最后数字要么收敛等于 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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
def func(a):
s = 0
while(a>0):
rest = a % 10
s = s + rest * rest
a = a // 10
return s

def main():
inputStr = input()
try:
integer = eval(inputStr)
except:
print(False)
else:
i = 0
while( i < 1000 and integer != 1):
integer = func(integer)
i += 1
if i<1000 and integer ==1:
print(True)
else:
print(False)

main()

2. 阶乘累计求和

获得用户输入的整数n,输出 1!+2!+…+n! 的值。 如果输入数值为 0、负数、非数字或非整数,输出提示信息:输入有误,请输入正整数。

1 = 1
1*2 = 2 3
1*2*3 = 6 9
1*2*3*4 = 24 33
1*2*3*4*5 = 120 153

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
def func(length):
item = 1
summer = 0
for i in range(1, length+1):
item *= i
summer += item
return summer

def main():
try:
inputStr = input()
integer = eval(inputStr)
if (integer <= 0):
raise Exception
print(func(integer))
except:
print("输入有误,请输入正整数")
return

main()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
def main():
USER_NAME = 'Kate'
PWD = '666666'
LEN = 3
for i in range(LEN):
userName = input()
pwd = input()
if USER_NAME == userName and PWD == pwd:
print("登录成功!")
break
if i + 1 == LEN:
print("3次用户名或者密码均有误!退出程序。")
else:
print("用户名或者密码错误!")

main()