提问者:小点点

快乐数字程序


所以快乐数是一个数字,其中以任何正整数开始,用它的数字的平方和替换数字,这个过程会重复,直到变成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。 为什么会这样?


共2个答案

匿名用户

因为您不会返回递归调用的结果,所以除非第一次计算已经产生了一个结果,否则您不会返回任何结果:

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)