幸福数字计划
Program for happy numbers
所以快乐的数字是一个数字,从任意正整数开始,用它的各位数字的平方和代替这个数字,这个过程会一直重复,直到变成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 是一个快乐的数字,但我的函数总是 returns None 而不是 True。为什么会这样?
因为您没有return递归调用的结果,所以除非第一个计算已经产生一个结果,否则您不会return任何结果:
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
在其他情况下,您必须 return happy(sum)
在其他情况下你必须 return 快乐(总和)0
因为你没有return你的递归调用的结果,所以除非第一个计算已经产生了一个,你不会return任何结果
唯一的问题是,如果您尝试使用会不断循环的非快乐数字(如 58),程序将会卡住。另一种验证方法,直到结果是一位数长,并验证它是否为 1.
def happy(n):
while len(str(n)) > 1:
n = sum(int(x)**2 for x in str(n))
return (n == 1)
所以快乐的数字是一个数字,从任意正整数开始,用它的各位数字的平方和代替这个数字,这个过程会一直重复,直到变成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 是一个快乐的数字,但我的函数总是 returns None 而不是 True。为什么会这样?
因为您没有return递归调用的结果,所以除非第一个计算已经产生一个结果,否则您不会return任何结果:
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
在其他情况下,您必须 return happy(sum)
在其他情况下你必须 return 快乐(总和)0
因为你没有return你的递归调用的结果,所以除非第一个计算已经产生了一个,你不会return任何结果
唯一的问题是,如果您尝试使用会不断循环的非快乐数字(如 58),程序将会卡住。另一种验证方法,直到结果是一位数长,并验证它是否为 1.
def happy(n):
while len(str(n)) > 1:
n = sum(int(x)**2 for x in str(n))
return (n == 1)