对“求水仙花数”的代码有疑问
代码for i in range(100, 1000):
sum = 0
temp = i
while temp:
sum = sum + (temp%10) ** 3
temp //= 10 # 注意这里要使用地板除哦~
if sum == i:
print(i)
水仙花数的定义 :如果一个 3 位数等于其各位数字的立方和,则称这个数为水仙花数。例如:153 = 1^3 + 5^3 + 3^3,因此 153 就是一个水仙花数
疑问:
运行逻辑是 i = 某个数
某个数进行循环,如果最后 sum == i ,print(i),
这是时候应该跳出循环进行下一个数的演算,但没有else也没有break或者continue呢?
https://fishc.com.cn/forum.php?mod=viewthread&tid=192863&ctid=1921
temp //= 10
这行代码会改变temp的值
知道temp=0,退出循环 青出于蓝 发表于 2021-8-30 13:45
https://fishc.com.cn/forum.php?mod=viewthread&tid=192863&ctid=1921
temp //= 10
这行代码会改变temp ...
temp = i , i属于一百到一千之中,i永远不可能为0, temp也永远不可能为零吧? while temp:
sum = sum + (temp%10) ** 3
temp //= 10 # 注意这里要使用地板除哦~
只有这段是while循环,你可以试一下,最多三次循环就为0了
>>> temp = 999
>>> temp//10
99
>>> 99//10
9
>>> 9//10
0 L-茉遇 发表于 2021-8-30 14:39
temp = i , i属于一百到一千之中,i永远不可能为0, temp也永远不可能为零吧?
i不为0,但temp会为零,地板除,舍去余数。
页:
[1]