py计算任意三位数是否为水仙花数(该数字位数>=3,此为3位数版)

例如:153 = 1**3 + 5**3 + 3**3,符合此类条件就为水仙花数。

 

 1 1.三位数版水仙花数判断器
 2 shuzi, shuzi2, shuzi3 = input("第一个数字:"), input("第二个数字:"), input("第三个数字:") #输入三个数字
 3 zongshuzi = str(shuzi + shuzi2 + shuzi3) #变量zongshuzi print 后为字符串三位数字的链接,例如shuzi为5,shuzi2为6,shuzi3为7,那么print后为字符串"567"
 4 while not zongshuzi.isdigit(): # isdigit函数有个前提,那就是.前必须为字符串格式,否则会报错。主要用来判断该字符串所有字符是否为数字,True或Falst
 5     shuzi, shuzi2, shuzi3 = input("格式错误,请输入数字:"), input("第二个数字:"), input("第三个数字:")
 6     # 若用户输入的不是数字,则重新输入
 7     zongshuzi = str(shuzi + shuzi2 + shuzi3)
 8     # zongshuzi变量重新赋值,并重新到while处判断
 9     
10 print("您输入的数字是:" + shuzi + shuzi2 + shuzi3)
11 if (int(shuzi)**3 + int(shuzi2)**3 + int(shuzi3)**3) == int(shuzi + shuzi2 + shuzi3):
12     # 先将shuzi, shuzi2, shuzi3转化为数字格式,==后的由于shuzi + shuzi2 + shuzi3为字符串格式的相连,故要转化
13     print("是水仙花数!")
14 else:
15     print("不是水仙花数")
16 
17 2.求100到999之间的水仙花数
18 for i in range(100, 999):
19     # 打印出100到999之间的数字
20     i1 = list(str(i))
21     # 此时的i为数字格式,题目要求是要对i的每个位数判断,故需要拆分i,list是一种可取的方法,但要先将i转化为str格式
22     if (int(i1[0])**3 + int(i1[1])**3 + int(i1[2])**3) == int(i1[0] + i1[1] + i1[2]):
23         print(int(i))
24         # 也可print(int(i), end = " ")

 

posted @ 2017-12-01 17:15  类十三  阅读(1419)  评论(0编辑  收藏  举报