Python 快乐数字计划
所以快乐数是一个数字,从任何正整数开始,用数字的平方和替换这个数字,这个过程将重复,直到它变成1,否则,它将在一个循环中无限循环。当1找到这些数字时,它们将是一个快乐的数字 假设数字为19,则输出为真,因为该数字是一个快乐的数字。正如我们从第19页看到的,我们将得到 12+92=82 82+22=68 62+82=100 12+02+02=1 这是我的密码:Python 快乐数字计划,python,numbers,happy,Python,Numbers,Happy,所以快乐数是一个数字,从任何正整数开始,用数字的平方和替换这个数字,这个过程将重复,直到它变成1,否则,它将在一个循环中无限循环。当1找到这些数字时,它们将是一个快乐的数字 假设数字为19,则输出为真,因为该数字是一个快乐的数字。正如我们从第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 +=
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。为什么会这样?因为您没有返回递归调用的结果,所以除非第一次计算已经产生结果,否则您不会返回任何结果: 戴夫·哈皮恩: s=liststrn 总和=0 对于s中的i: 总和+=inti**2 如果总和=1: 返回真值 其他: return happysum此处缺少return语句
因为您不返回递归调用的结果,所以除非第一次计算已经产生结果,否则您不会返回任何结果: 戴夫·哈皮恩: s=liststrn 总和=0 对于s中的i: 总和+=inti**2 如果总和=1: 返回真值 其他: return happysum此处缺少return语句
在else条件下,您必须返回happysum在else条件下,您必须返回happysum在else条件下,您必须返回happysum0
因为您不返回递归调用的结果,所以除非第一次计算已经产生了一个结果,否则您不会返回任何结果,否则您必须返回happysum0
因为您没有返回递归调用的结果,所以除非第一次计算已经产生了一个结果,否则您不会返回任何结果。唯一的问题是,如果您尝试使用像58这样的不满意的数字,而该数字将继续循环,程序将被卡住。另一种方法是验证结果是否为一位数,并验证结果是否为1 戴夫·哈皮恩: 当lenstrn>1时: n=在strn中x的sumintx**2 返回n==1
唯一的问题是,如果你尝试使用一个像58这样的不愉快的数字,程序将被卡住,而这个数字将继续循环。另一种方法是验证结果是否为一位数,并验证结果是否为1 戴夫·哈皮恩: 当lenstrn>1时: n=在strn中x的sumintx**2 返回n==1