python - 我为快乐号码检查器编写的代码无法正常工作,有人可以检查一下吗?

标签 python python-2.7 set

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))

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

供引用:http://en.wikipedia.org/wiki/Happy_number

最佳答案

试试这个:

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)

关于python - 我为快乐号码检查器编写的代码无法正常工作,有人可以检查一下吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12447837/

相关文章:

python - 只需输入一次 PEM 密码短语

python - 使用 Python 从 Telnet 输出中提取特定字符串

python - 计算 csv 中双参数匹配的出现次数,将结果 append 到 csv

interface - 是否可以在接口(interface)定义中使用 getter/setter?

c++ - 在集合中找到一对 C++

python - 使用scrapy,python中的站点地图蜘蛛解析站点地图中具有不同url格式的url

python - 如何在 Python 中使用 XSL 样式表将 XML 转换为 HTML?

python-2.7 - piCamera值错误: Incorrect buffer length for resolution 640x480

python - 在遍历for循环的python中使用ftell()的意外文件指针位置

c++ - C++ 中的 "set"是什么?它们什么时候有用?