用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)
不能把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就好 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) qiuyouzhi 发表于 2020-3-27 11:25
不能把sum放在外面:
因为每次循环都要判断,所以在开始把它初始化为0就好
!太厉害了!感谢大神!!! 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 没有归零 把sum = 0 放到循环内部 xcsummer 发表于 2020-3-27 11:33
把sum = 0 放到循环内部
嗯嗯,知道了,谢谢大神! xcsummer 发表于 2020-3-27 11:32
你这样写可以判断出一个水仙花数,但是用完之后sum 没有归零
是的,你说的那个程序我也知道,我只是觉得拆分更直观一点,想试一下拆分可不可以。谢谢!
页:
[1]