jimuerga 发表于 2020-5-21 18:59:04

为什么会显示两个370,请大神指导,谢谢

Sum = 0
for i in range(100,1000):
    m = str(i)
    for t in m:
      Sum +=int(t)**3
      if Sum == i:
            print(Sum)
    Sum = 0

qiuyouzhi 发表于 2020-5-21 19:02:08


for i in range(100,1000):
    Sum = 0
    m = str(i)
    for t in m:
      Sum += int(t)**3
      if Sum == i:
            print(Sum)
            break

Twilight6 发表于 2020-5-21 19:17:27

本帖最后由 Twilight6 于 2020-5-21 20:21 编辑


开始遍历 字符串 '370'

先 3
3 ** 3 = 27

循环遍历到 7 时候
7 ** 3 = 343
Sum = 370

这两个相加已经等于370了 所以符合 Sum == i 条件 打印一次 370
然后继续遍历 0
0 ** 3 = 0
Sum = 370导致再次打印
把第二个for循环的if移到第一个for循环的if 下即可
Sum = 0
for i in range(100,1000):
    m = str(i)
    for t in m:
      Sum +=int(t)**3
    if Sum == i:
      print(Sum)
    Sum = 0

jimuerga 发表于 2020-5-21 19:42:14

Twilight6 发表于 2020-5-21 19:17
开始遍历 字符串 '370'

先 3


谢谢
页: [1]
查看完整版本: 为什么会显示两个370,请大神指导,谢谢