请教 新版Python 第18课课后作业
本帖最后由 mlucy3636 于 2021-1-9 17:00 编辑0. 编写一个程序,求解 100~999 之间的所有水仙花数。
for i in range(100, 1000):
sum = 0
temp = i
while temp:
sum = sum + (temp % 10) ** 3
temp //= 10
if sum == i:
print(i)
虽然小甲鱼给出了一些解释,但我这个菜鸟还是看不懂!{:5_94:}
搞不懂程序是如何运算的,每一步如何执行循环过程,麻烦大神举例说明(比如i=153)
越详细越好{:9_221:}
我自己的理解(例如i=153):
sum=0
temp=153
sum=0+(153 % 10)**3=0+3**3=9
temp=153 // 10=15
上面我理解的对吗?
然后再如何循环?就不懂了。。。。。。 本帖最后由 昨非 于 2021-1-9 17:07 编辑
看看这个的最佳答案,讲的十分详细
<font color="red">[已解决]</font>python009课后习题的水仙花数程序看不懂
https://fishc.com.cn/thread-171563-1-1.html
(出处: 鱼C论坛)
论坛主页搜索“水仙花”,就有你想要的解释,所以要善用论坛的搜索功能哦 因为while temp:执行循环,
接下来就是:
sum=3**3
temp=15
sum=3**3+(15 % 10)**3=3**3+5**3
temp=15// 10=1
再循环:
sum=3**3+5**3
temp=1
sum=3**3+5**3+(1% 10)**3=3**3+5**3+1**3
temp=1// 10=0
此时temp<0跳出循环。
循环第一次得到个位的3次方
循环第二次得到个位的3次方与十位的3次方的和
第三次得到个位的3次方与十位的3次方与百位3次方的和 行人不止 发表于 2021-1-9 17:43
因为while temp:执行循环,
接下来就是:
sum=3**3
谢谢你~
页:
[1]