小马奔腾9 发表于 2020-11-24 21:05:42

程序怎么跑不出结果来

编写一个程序,求 100~999 之间的所有水仙花数。
如果一个 3 位数等于其各位数字的立方和,则称这个数为水仙花数。例如:153 = 1^3 + 5^3 + 3^3,因此 153 就是一个水仙花数
1.      for i in range(100, 1000):
2.            sum = 0
3.            temp = i
4.            while temp:
5.                sum = sum + (temp%10) ** 3
6.                temp //= 10         # 注意这里要使用地板除哦~
7.            if sum == i:
8.                print(i)


我自己写的程序怎么跑不出结果来呀,程序卡住了,求大神指教:
for i in range(100,1000):
    sum = 0
    while True:
      sum += (i % 10 )**3
      i //= 10
    if sum == i:
      print(i)

jackz007 发表于 2020-11-24 21:11:58

本帖最后由 jackz007 于 2020-11-24 21:17 编辑

for i in range(100,1000):
    sum = 0
    while True:               # 这里是死循环
      sum += (i % 10 )**3
      i //= 10            # i 不可以改变,因为后面还有用
    if sum == i:            # 这里还要用到 i 所以,前面不可以修改
      print(i)
      改为下面这样就可以了
for i in range(100,1000):
    sum = 0
    temp = i
    while temp:
      sum += (temp % 10 ) ** 3
      temp //= 10
    if sum == i:
      print(i)

昨非 发表于 2020-11-24 21:15:15

for i in range(100,1000):
    sum = 0
    temp=i
    while temp:#这里如果时true的话,直接死循环,出不来结果的 ,改成temp
      #之所以循环内用temp而不用i,是因为temp在每次循环的时候值时变化的,而i要用于最后的判断,不能变
      sum += (temp % 10 )**3
      temp //= 10
    if sum == i:
      print(i)

昨非 发表于 2020-11-24 21:16:50

jackz007 发表于 2020-11-24 21:11
改为下面这样就可以了

老哥,这个是死循环吧{:10_245:}
页: [1]
查看完整版本: 程序怎么跑不出结果来