赛酱想学编程 发表于 2022-7-10 17:39:21

萌新想请教这个水仙花数问题

for i in range(100, 1000):
    sum = 0
    temp = i
    while temp:
      sum = sum + (temp%10) ** 3
      temp //= 10         # 注意这里要使用地板除哦~
    if sum == i:
      print(i)


求大神给我解释一下这些代码的意思,没看太懂。还有几个疑问,想知道为啥要引入一个中介temp=i,还有为什么temp地板除那里没有除数怎么可以直接等于10????求帮助谢谢!

青出于蓝 发表于 2022-7-10 17:42:59

本帖最后由 青出于蓝 于 2022-7-10 17:45 编辑

第一个问题 https://fishc.com.cn/forum.php?mod=viewthread&tid=192863&highlight=%C7%B3%CC%B8 有详细解释
第二个问题 temp//=10和temp=temp//10是一样的 所以说除数就是10
欢迎追问

青出于蓝 发表于 2022-7-10 17:44:22

本帖最后由 青出于蓝 于 2022-7-10 17:46 编辑

P.S. 有好多同学都很疑惑为什么这里要用temp,原因就是如果用i来算的话,后面的if sum == i里面的i就会因为上面的计算变成0,就得不到正确的结果了
选自2#文章

青出于蓝 发表于 2022-7-10 17:47:49

temp来暂时代替i,因为它的值后期会改变

赛酱想学编程 发表于 2022-7-10 21:09:04

青出于蓝 发表于 2022-7-10 17:42
第一个问题 https://fishc.com.cn/forum.php?mod=viewthread&tid=192863&highlight=%C7%B3%CC%B8 有详细解 ...

帖子里面那里怎么冒了个123出来??没看懂那个部分{:5_104:}

青出于蓝 发表于 2022-7-10 21:30:32

赛酱想学编程 发表于 2022-7-10 21:09
帖子里面那里怎么冒了个123出来??没看懂那个部分

作者可能打错了,123应该是153

赛酱想学编程 发表于 2022-7-11 08:00:41

青出于蓝 发表于 2022-7-10 21:30
作者可能打错了,123应该是153

好的好的,谢谢!

乱-星光 发表于 2022-7-11 17:31:28

2333
页: [1]
查看完整版本: 萌新想请教这个水仙花数问题