找水仙花数,求大佬教教我哪里不对
def findsxh(a):sum=0
while a:
sum=sum+(a%10)**3
a=a//10
if a==sum:
return sum
i=0
while True:
print(findsxh(a=i),end=' ')
i+=1
你的思路是对的,不过有几个问题
第一个问题:你的 a 在循环完之后都变成 0 了,肯定不会等于 sum 的,
所以你可以先把 a 存起来,用于后面跟 sum 比较
第二个问题:你应该判断一下结果再打印,因为没有结果也会有返回值的,只不过返回None而已
第三个问题:你应该设置一个范围,而不是让它一直死循环,计算机运行地很快,
你让它死循环又不 sleep 的话,根本就没法看到结果
故对你的代码修改如下:
def findsxh(a):
sum=0
temp = a # 注意这里
while a:
sum=sum+(a%10)**3
a=a//10
if temp==sum: # 注意这里
return sum
for i in range(1000): # 注意这里
result = findsxh(a = i)
if result: # 注意这里
print(result,end=' ') 因为你 a的值已经改变, 我记得一般都是从100开始的,我稍作修改
def findsxh(a):
sum = 0
temp = a
while a:
sum = sum+(a % 10)**3
a = a//10
if temp == sum:# a 已经改变了
return print(sum, end=" ")
i = 100
while i < 1000:
findsxh(a=i)
i += 1 这种特性的数应该叫自幂数,也有叫自恋数,阿姆斯特朗数。水仙花数是特指三位数中的此类数。既:遍历范围在100 - 999。
所以,循环语句应该是 for i in range(100, 1000)
页:
[1]