江湖散人 发表于 2021-3-23 18:30:56

自己写的程序,不知道哪错了

def coloful():
    for each in range(100,1000):
      temp = each
      sum = 0
      while temp:
            sum = int(temp/10%10)**3 + int(temp%10**3) + int(temp/10/10)**3
            if sum == each:
                print(each ,end = '\t')


print("所有的水仙花分别是:",end ='')
coloful()



这个程序怎么运行起来什么也没有啊?而且一直在运行,只打印出来‘所有的水仙花分别是’,哪位高手帮忙解答一下吧,谢谢

wkicent 发表于 2021-3-23 18:34:46

我感觉,你那个while temp 一直在循环,所以一直没有答案

qiuyouzhi 发表于 2021-3-23 18:46:18

改成这样:
def colorful():
    for each in range(100,1000):
      temp = each
      sum = int(temp/10%10)**3 + int(temp%10)**3 + int(temp/10/10)**3
      if sum == each:
            print(each, end = '\t')


print("所有的水仙花分别是:")
colorful()

阿奇_o 发表于 2021-3-23 18:52:00

temp首先被赋值为100,然后就没变过,一直等于100(非水仙花数),当然不会得到正确答案
(while 条件等于0或false时,才会跳出while循环 !!)

不过,兄弟,为啥要用 while ?    直接用 if 判断每个each不就行了吗?

for i in range(100, 1000):
    g = i % 10
    s = i // 10 % 10
    b = i // 100
    if i == g**3 + s**3 + b**3 :
      print(i)

crisfo 发表于 2021-3-23 19:20:54

感觉你对循环结构的理解还不够透彻

funnyjoke 发表于 2021-3-23 19:21:12

一个死循环了,上面两位修改真好。

傻眼貓咪 发表于 2021-9-5 17:00:24

def isNarcissistic(num): # 水仙花數(Narcissistic number)
    def func(num, res = 0):
      if num < 10: return num**3
      res += ((eval(str(num)[-1])**3) + func(eval(str(num)[:-1]), res))
      return res
    return func(num) == num

页: [1]
查看完整版本: 自己写的程序,不知道哪错了