python下面代码sun = 0 为何不可以放到for循环外面即第一行,而是要放在for循环里?

for i in range(100, 1000):
sum = 0
temp = i
while temp:
sum = sum + (temp%10) ** 3
temp //= 10 # 注意这里要使用地板除哦~
if sum == i:
print(i)

第1个回答  2021-01-21
这是求水仙花数。

如果放在for循环外面,则sum=0只会执行一次,放在里面的话每次for循环时sum都会清零。

按逻辑,判断每一个3位数是否是水仙花数时都必须清零一次,所以需放在for循环的里面。否则,sum计算出的将是所有3位数的各个数字的立方和,这显然是错误的。
第2个回答  2021-01-21
如果sum=0放在for循环内,则每次循环开始时,就会把sum初始化为0,这时sum的作用是保存100-1000中每个位上数字的三次幂之和
如果sum=0放在循坏外,则只是第一次循环时把sum初始化为0,这时sum的作用为保存所有三位数的每个位上数字的三次幂之和
看使用目的决定sum=0的位置,如果是求阿姆斯特朗数的话,sum就应该是发挥前一个作用,所以不能放在循环外
相似回答