122829377 发表于 2018-12-2 13:43:17

看看这里出了什么问题

要求10~1000的水仙花数,就是各个数位上的立方和等于原数字。代码如下:
for number in range (10,1000):
    b=0
    for i in str(number):
      b=int(i)**3+b
      if b==number:
            print(number)
输出结果是这样的

为什么370输出了两次?

爱学习的懒懒君 发表于 2018-12-2 15:25:44

你应该是内循环完成一次才进行一次判断的,就是得到三位数各个位上立方和之后才进行判断,不然就像这样, 3**3 + 7**3 == 370,输出一次,3**3 + 7 ** 3 + 0 ** 3 == 370

heidern0612 发表于 2018-12-2 15:34:37

因为你b默认给了个0的值,导致37和370输出的结果都是370。

塔利班 发表于 2018-12-2 15:45:21

for number in range (10,1000):
    b=0
    for i in str(number):
      b=int(i)**3+b
    if b==number:
      print(number)
改一下缩进就好了,因为你37就满足,加个0的立方当然也满足了,
你把判断放后边就行
页: [1]
查看完整版本: 看看这里出了什么问题