Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 快乐数字计划_Python_Numbers_Happy - Fatal编程技术网

Python 快乐数字计划

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 +=

所以快乐数是一个数字,从任何正整数开始,用数字的平方和替换这个数字,这个过程将重复,直到它变成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 += 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