我为一个快乐的号码检查器编写的代码不起作用,有人可以检查一下吗?

Ric*_*nny 1 python set python-2.7

a = int(raw_input("Enter a number to check if it is happy:"))
l = map(int, str(a))
c = 0
while 1:
    for i in l:
       b = i
       c = c + b **2
    if c == 1:
        print "Happy Number!"
        raw_input("Hit enter to end")
        break
    elif c == a:
        print ("Not a Happy number")
        raw_input("Hit enter to end")
        break
    else:
        l = map(int, str(c))
Run Code Online (Sandbox Code Playgroud)

这是我用Python编写的代码,它使用数字1和0,但是我尝试过的任何其他数字都使它无限循环.有人可以看看我做错了什么并提出解决方案吗?谢谢 :)

供参考:http://en.wikipedia.org/wiki/Happy_number

ars*_*jii 6

试试这个:

a = int(raw_input("Enter a number to check if it is happy: "))
visited = set()
while 1:
    if a == 1:
        print "Number is happy!"
        break
    a = sum(int(c) ** 2 for c in str(a))
    if a in visited:
        print "Number is sad!"
        break
    visited.add(a)
Run Code Online (Sandbox Code Playgroud)

  • 一个集合不能有重复的元素,但列表可以.如果向集合{1,2,3}添加2,则结果仍为{1,2,3}.但是如果你在列表[1,2,3]中加2,结果将是[1,2,3,2].希望有所帮助! (2认同)