快乐数的解法

本文是魏皮皮同学提议,我当然就同意了,方法来源于河大小皮皮博客中所提的第二种思路,

首先第一种方法是自己想的,没有知识做铺垫,有一点点的问题,只能是有限次,但是一般情况应该够了,除了那种巨难的数

 1 n=input()
 2 a=0
 3 while True:
 4     b=0
 5     for i in str(n):
 6         b=b+eval(i)**2
 7     if a>100:
 8         print(False)
 9         break
10     elif b!=1:
11         n=b
12         a=a+1
13         continue
14     elif b==1:
15         print(True)
16         break

第二种想法是图中所说的

 1 while True:
 2     n=input()
 3     a=n
 4     while a not in ("1","4","16","37","58","89","145","42","20"):
 5         b=0
 6         for i in str(a):
 7             b=b+eval(i)**2
 8         a=str(b)
 9     if eval(a)==1:
10          print("{} is  a  happynumber !".format(n))
11     else:
12          print("{} is  not  a  happynumber !".format(n))

 

关于快乐数,1, 7, 10, 13, 19, 23, 28, 31, 32, 44, 49, 68, 70, 79, 82, 86, 91, 94, 97, 100,这些是100以内的快乐数,好像5555和888也是(随手试出来的),上述已亲测,有兴趣的童鞋可以试试看

自从会用while循环之后特别喜欢用它来写,其实我最开始都是定义函数来写这些代码,但是,忽然发现顺序好像更方便,然后就改了(好多次了)

如果方法二出现无限错误的话,应该就要用try-except异常处理了,希望不会吧

posted @ 2018-06-27 15:57  那年那兔  阅读(296)  评论(0编辑  收藏  举报