xavier113 发表于 2020-8-27 08:08:28

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:20:31

本帖最后由 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值

Twilight6 发表于 2020-8-27 09:12:11



看看这个能不能帮助到你:https://fishc.com.cn/forum.php?mod=redirect&goto=findpost&ptid=176562&pid=4878028

xavier113 发表于 2020-8-29 10:15:25

Twilight6 发表于 2020-8-27 09:12
看看这个能不能帮助到你:https://fishc.com.cn/forum.php?mod=redirect&goto=findpost&ptid=176562&pi ...

連結中的第二回覆,有解釋到想理解的部分,感謝

/Users/xavier_li/Desktop

xavier113 发表于 2020-8-29 10:15:57

1q23w31 发表于 2020-8-27 08:20
以水仙花数153为例,即temp=153
第一次循环:



感謝回覆
页: [1]
查看完整版本: Python舊版第九講動動手01求水仙花數