皮蛋子h 发表于 2025-3-9 22:18:57

问为何运行不了

def shuixianhua():
    for each in range(100,1000):
      sum=0
      while each:
            sum=sum+(each%10)**3
            each=each//10


      if sum==each:
            print(each,end='\t')


print('所有水仙花数',end='')

FishC 发表于 2025-3-9 22:19:05

你在代码中遇到的主要问题是变量 each 的使用。由于在循环中对 each 进行了修改,到了判断条件 if sum==each: 时,each 已经被修改为 0,所以永远不会满足条件。你需要保存原始的 each 值用于比较。下面是修正后的代码:


def shuixianhua():
    for each in range(100, 1000):
      sum = 0
      number = each# 保存原始的 each 值用于比较
      while each:
            sum = sum + (each % 10) ** 3
            each = each // 10

      if sum == number:
            print(number, end='\t')

print('所有水仙花数', end=' ')
shuixianhua()


这样,代码就可以正常运行并输出所有三位数的水仙花数了。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页: [1]
查看完整版本: 问为何运行不了