Python舊版第九講動動手01求水仙花數
該題題目: 编写一个程序,求 100~999 之间的所有水仙花数。自己暴力的寫法:
for x in range(100,1000):
x = str(x)
a = int(x)**3
b = int(x)**3
c = int(x)**3
x = int(x)
if x == a+b+c:
print(x)
小甲魚的解答:
for i in range(100, 1000):
sum = 0
temp = i
while temp:
sum = sum + (temp%10) ** 3
temp //= 10
if sum == i:
print(i)
問題>>> while 迴圈內的意思看不懂
while temp:
sum = sum + (temp%10) ** 3
temp //= 10
本身數學不是很好,有勞各位前輩,大神指點,感謝
本帖最后由 1q23w31 于 2020-8-27 08:34 编辑
以水仙花数153为例,即temp=153
第一次循环:
sum=0+(153%10)**3,#sum=3**3=27
temp //= 10#运用地板除法,temp=15
第二次循环:
sum=sum+(15%10)**3,#sum=3**3+5**3=152
temp //= 10#运用地板除法,temp=1
第三次循环:
sum=sum+(1%10)**3,#sum=3**3+5**3+1**3=153
temp //= 10#运用地板除法,temp=0
第四次循环判断,while temp:#temp=0,不满足条件退出循环
if sum == i:#判断sum与i值是否相同
print(i)#输出i值
看看这个能不能帮助到你:https://fishc.com.cn/forum.php?mod=redirect&goto=findpost&ptid=176562&pid=4878028 Twilight6 发表于 2020-8-27 09:12
看看这个能不能帮助到你:https://fishc.com.cn/forum.php?mod=redirect&goto=findpost&ptid=176562&pi ...
連結中的第二回覆,有解釋到想理解的部分,感謝
/Users/xavier_li/Desktop 1q23w31 发表于 2020-8-27 08:20
以水仙花数153为例,即temp=153
第一次循环:
感謝回覆
页:
[1]