【发布时间】:2017-05-23 07:24:58
【问题描述】:
https://www.youtube.com/watch?v=kC6YObu61_w
看完链接视频“7和快乐的数字”后,我决定写一点代码来检查给定的数字是否是快乐的数字。
c = []
num = int(input("What number would you like to check? "))
def happyNum(n):
newNum = 0
c = []
a = str(n)
for b in a:
c.append(int(b))
for d in c:
newNum = newNum + d**2
if newNum <= 1:
return True
elif newNum == 145:
return False
elif newNum == 113:
return False
elif newNum == 130:
return False
else:
happyNum(newNum)
if happyNum(num) == True:
print("You've found yourself a happy number!")
elif happyNum(num) == False:
print("Not a happy number I'm afraid!")
我用 7 测试了它,从视频中我知道这是一个幸运数字,结果发现什么都没有打印出来。我做了一些测试,该功能运行良好。一旦达到 1,它就进入 if 语句。唯一的问题是它永远不会返回 True。为什么会发生这种情况,我该如何解决?顺便说一句,如果这可能很重要,该函数是递归的。
【问题讨论】:
-
您在
happyNum函数中缺少返回语句return happyNum(newNum) -
那应该去哪里?
-
在
else的happyNum函数中。顺便说一句,如果输入不是一个快乐的数字,你将在你的函数中得到一个无限循环。 -
我将 else 语句更改为“else: return happyNum(newNum)”,但它仍然没有返回 True
-
在
happyNum的任何调用中,c设置为空列表是否正常?