1365156784 发表于 2022-3-2 15:40:31

找水仙花数,求大佬教教我哪里不对

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
   

isdkz 发表于 2022-3-2 15:57:18

你的思路是对的,不过有几个问题

第一个问题:你的 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=' ')

大马强 发表于 2022-3-2 16:01:34

因为你 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

超速无奈 发表于 2022-3-4 22:41:51

这种特性的数应该叫自幂数,也有叫自恋数,阿姆斯特朗数。水仙花数是特指三位数中的此类数。既:遍历范围在100 - 999。
所以,循环语句应该是 for i in range(100, 1000)
页: [1]
查看完整版本: 找水仙花数,求大佬教教我哪里不对