这是我刷的题目:
给定任何数字,我们可以通过添加该数字的数字平方和来创建一个新数字。例如,给定 203,我们的新号码是 4 + 0 + 9 = 13。如果我们重复这个过程,我们会得到一个数字序列:
203 -> 13 -> 10 -> 1 -> 1
有时,与 203 一样,序列到达(并停留在)1。像这样的数字被称为快乐。
并不是所有的数字都是快乐的。如果我们从 11 开始,序列将是:
11 -> 2 -> 4 -> 16 -> ...
这个序列永远不会到达1,所以这个数字11被称为不快乐。
给定一个正整数,你必须确定这个数字是快乐的还是不快乐的
自己写的半成品代码:
n = input()
ls = list(n)
sum = 0
for i in ls:
sum = sum + int(i)*int(i)
sum = str(sum)
while sum!='1':
ls1 = list(sum)
sum = 0
for i in ls1:
sum = sum + int(i)*int(i)
sum = str(sum)
x = sum == '1'
print(x)
求指点
n = 203
xx = []
while True:
y = sum(map(lambda x: int(x) **2, str(n)))
if y == 1 or y in xx:
xx.append(y)
break
xx.append(y)
n = y
print('是快乐数' if 1 in xx else "非快乐")
我整理了一个例子,参考一下吧:
n = input()
lsts = []
while True:
if n=='1':
print('happy number')
break
lst = [int(s)*int(s) for s in n]
n = str(sum(lst))
print(n)
if n not in lsts:
lsts.append(n)
else:
print('not happy number')
break