yang_alpha 发表于 2020-3-27 11:20:31

用for语句求100-1000内的水仙花数

把三位数拆分开成为每个字符再int()之后三次方相加,逻辑和过程没问题,但是为什么只能运行初始数字不会一直往下循环呢?
代码如下,求大神指教!!!到底哪里出了错误!如果我初始值设置为153水仙花数,程序是可以进行的,但是不会继续往下了{:10_266:} 求各位大神指点!
sum = 0
for i in range(100,1000):
    a = str(i)
    for l in a:
      b = int(l)
      sum = sum + b**3
    if sum == i:
      print(sum)

qiuyouzhi 发表于 2020-3-27 11:25:53

不能把sum放在外面:

for i in range(100,1000):
   sum = 0
   a = str(i)
   for l in a:
       b = int(l)
       sum = sum + b**3
   if sum == i:
       print(sum)
因为每次循环都要判断,所以在开始把它初始化为0就好

一个账号 发表于 2020-3-27 11:27:17

for i in range(100,1000):
   sum = 0
   a = str(i)
   for l in a:
       b = int(l)
       sum += b**3
   if sum == i:
       print(sum)

yang_alpha 发表于 2020-3-27 11:31:17

qiuyouzhi 发表于 2020-3-27 11:25
不能把sum放在外面:

因为每次循环都要判断,所以在开始把它初始化为0就好

!太厉害了!感谢大神!!!

xcsummer 发表于 2020-3-27 11:32:05

list = []
for i in range(100,1000):
    bw = i // 100
    sw = i //10 % 10
    gw = i % 10
   
    if bw**3 + sw**3 + gw**3 == i:
      list.append(i)
print('阿姆斯特数:',list[:])

你这样写可以判断出一个水仙花数,但是用完之后sum 没有归零

xcsummer 发表于 2020-3-27 11:33:48

把sum = 0 放到循环内部

yang_alpha 发表于 2020-3-27 11:45:29

xcsummer 发表于 2020-3-27 11:33
把sum = 0 放到循环内部

嗯嗯,知道了,谢谢大神!

yang_alpha 发表于 2020-3-27 11:47:14

xcsummer 发表于 2020-3-27 11:32
你这样写可以判断出一个水仙花数,但是用完之后sum 没有归零

是的,你说的那个程序我也知道,我只是觉得拆分更直观一点,想试一下拆分可不可以。谢谢!
页: [1]
查看完整版本: 用for语句求100-1000内的水仙花数