所以快乐数是一个数字,其中以任何正整数开始,用它的数字的平方和替换数字,这个过程会重复,直到变成1,否则,就会在一个循环中无休止地循环。 那些数字,当1找到时,它们将是一个快乐的数字。
假设数字为19,输出将为true,因为该数字是一个快乐的数字。 正如我们从19中看到的,我们将得到
12+92=82
82+22=68
62+82=100
12+02+02=1
下面是我的代码:
def happy(n):
s = list(str(n))
sum = 0
for i in s:
sum += int(i)**2
if sum == 1:
return True
else:
happy(sum)
x = 0
if __name__=="__main__":
n =int(input())
print(happy(n)) # to check what it returns
if happy(n):
print("True")
else:
print("False")
因为19是一个很好的数字,但是我的函数总是返回None而不是true。 为什么会这样?
因为您不会返回递归调用的结果,所以除非第一次计算已经产生了一个结果,否则您不会返回任何结果:
def happy(n):
s = list(str(n))
sum = 0
for i in s:
sum += int(i)**2
if sum == 1:
return True
else:
return happy(sum) # the return statement was missing here
在else条件下,您必须返回happy(sum)