easyboy 发表于 2019-11-7 16:11:41

关于零基础第九讲课后题之水仙花数问题的理解

for i in range(100, 1000):
    sum = 0
    temp = i
    while temp:
      sum = sum + (temp%10) ** 3
      temp //= 10         # 注意这里要使用地板除哦~
    if sum == i:
      print(i)
这里代码的逻辑+理解,看不明白。。。

Hoiste 发表于 2019-11-7 17:14:55

本帖最后由 Hoiste 于 2019-11-7 17:16 编辑

temp % 10求余得到temp个位上的数字,temp // 10 为地板除,当做把个位去掉,十位和百位组成一个新的两位数temp,然后再下一个循环temp % 10 取出新的temp的个位数,这里的个位数是原来的数的十位的数。然后以此类推。直到把百位也处理完了temp// 10 为零退出while循环。
这段代码比较核心的就是这部分,其他应该不难理解。。。

zltzlt 发表于 2019-11-7 17:50:53

https://fishc.com.cn/forum.php?mod=viewthread&tid=93848

easyboy 发表于 2021-5-26 22:20:59

Hoiste 发表于 2019-11-7 17:14
temp % 10求余得到temp个位上的数字,temp // 10 为地板除,当做把个位去掉,十位和百位组成一个新的两位数 ...

这应该就是迭代思想吧....
页: [1]
查看完整版本: 关于零基础第九讲课后题之水仙花数问题的理解