鱼C论坛

 找回密码
 立即注册
查看: 9756|回复: 14

[已解决]小白求助,sum = sum + (temp%10)**3是什么意思?

[复制链接]
发表于 2018-2-20 12:14:44 | 显示全部楼层 |阅读模式
1鱼币
for i in range(100, 1000): #这句我懂
    sum = 0 #为什么要把0赋值给SUM
    temp = i #这句我懂
    while temp:#while 后的temp是条件,条件为真,执行下面的循环,为什么是TEMP,不可以用是while i:
        sum = sum + (temp%10) ** 3# 这句完全看不懂,请大神帮忙详细解释下
        temp //= 10         #  这句也不是很明白
    if sum == i:
        print(i)

最佳答案
2018-2-20 12:14:45
水仙花数:
我估计你感到困惑的应该是里面的while循环
while temp:
        sum = sum + (temp%10) ** 3
        temp //= 10

temp % 10 得到的是temp这个值的个位数字,比如 111 % 10 == 1,234 % 10 == 4
(temp % 10) ** 3 表示这个数字的三次方,比如 2 ** 3 == 2 * 2 * 2 == 8
temp //= 10 表示temp右移1位,比如 123 // 10 == 12,234 // 10 == 23,地板除的意思是整除,只取整数部分而去掉小数部分

所以整个while循环的操作就是,拿temp=543举个例子
第一次循环
sum = 0 + 3 ** 3 = 9
temp = 54
第二次循环
sum = 9 + 4**3 = 9 + 64 = 73
temp = 5
第三次循环
sum = 73 + 5**3 = 73 + 125 = 198
temp = 0
第四次循环条件判定失败,跳出while循环,最终sum == 198
后续的判定中sum != 543
所以543不是水仙花数

最佳答案

查看完整内容

水仙花数: 我估计你感到困惑的应该是里面的while循环 while temp: sum = sum + (temp%10) ** 3 temp //= 10 temp % 10 得到的是temp这个值的个位数字,比如 111 % 10 == 1,234 % 10 == 4 (temp % 10) ** 3 表示这个数字的三次方,比如 2 ** 3 == 2 * 2 * 2 == 8 temp //= 10 表示temp右移1位,比如 123 // 10 == 12,234 // 10 == 23,地板除的意思是整除,只取整数部分而去掉小数部分 所以整个whil ...

评分

参与人数 1荣誉 +5 鱼币 +5 贡献 +3 收起 理由
南云_n + 5 + 5 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-2-20 12:14:45 From FishC Mobile | 显示全部楼层    本楼为最佳答案   
水仙花数:
我估计你感到困惑的应该是里面的while循环
while temp:
        sum = sum + (temp%10) ** 3
        temp //= 10

temp % 10 得到的是temp这个值的个位数字,比如 111 % 10 == 1,234 % 10 == 4
(temp % 10) ** 3 表示这个数字的三次方,比如 2 ** 3 == 2 * 2 * 2 == 8
temp //= 10 表示temp右移1位,比如 123 // 10 == 12,234 // 10 == 23,地板除的意思是整除,只取整数部分而去掉小数部分

所以整个while循环的操作就是,拿temp=543举个例子
第一次循环
sum = 0 + 3 ** 3 = 9
temp = 54
第二次循环
sum = 9 + 4**3 = 9 + 64 = 73
temp = 5
第三次循环
sum = 73 + 5**3 = 73 + 125 = 198
temp = 0
第四次循环条件判定失败,跳出while循环,最终sum == 198
后续的判定中sum != 543
所以543不是水仙花数

评分

参与人数 1荣誉 +5 收起 理由
chen@keyao + 5

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-2-20 12:29:52 | 显示全部楼层
1.sum不赋值的话就用不了。
2.在while循环里面有变化的是temp,而不是 i ,如果条件用 i 的话有可能会无限循环。
3.
sum = sum + (temp%10) ** 3
        temp //= 10   
这两句是一起用的,分别加上三位数的个位的3次方,十位的以及百位的。
4.如果没看明白可以参考http://bbs.fishc.com/thread-93848-1-1.html
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-2-20 12:36:35 From FishC Mobile | 显示全部楼层
这个程序里用while i也可以
%取余,**次方,//整除。
temp //= 10
等同于temp = temp // 10
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-9-28 11:49:03 | 显示全部楼层
BngThea 发表于 2018-2-20 12:14
水仙花数:
我估计你感到困惑的应该是里面的while循环
while temp:

太优秀了!感谢您~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-3-6 18:09:15 | 显示全部楼层
temp //= 10  就是 temp =  temp / / 10    的另一种写法
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-5-13 17:47:26 | 显示全部楼层
3**3=27
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-5-22 21:47:55 | 显示全部楼层
似懂非懂的感觉
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-7-2 10:46:45 | 显示全部楼层
BngThea 发表于 2018-2-20 12:14
水仙花数:
我估计你感到困惑的应该是里面的while循环
while temp:

谢谢你的解答,解开了我的疑惑
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-8-25 22:30:25 | 显示全部楼层
BngThea 发表于 2018-2-20 12:14
水仙花数:
我估计你感到困惑的应该是里面的while循环
while temp:

sum = 0+3** =9?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-9-17 16:46:12 | 显示全部楼层
第一次循环
sum = 0 + 3 ** 3 = 9?
不应该是27吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-12-13 06:42:01 | 显示全部楼层
BngThea 发表于 2018-2-20 12:14
水仙花数:
我估计你感到困惑的应该是里面的while循环
while temp:

sum = 0+ 3**3= 27  不是 9
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-2 00:47:51 | 显示全部楼层
太厉害了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-9-28 21:55:59 | 显示全部楼层
BngThea 发表于 2018-2-20 12:14
水仙花数:
我估计你感到困惑的应该是里面的while循环
while temp:

水仙花问题在你这找到了解答,谢谢!加深了对%和//运算符的理解,这个解答问题的思路怎么也想不到啊~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-1-21 15:33:46 | 显示全部楼层
我不懂的是判定水仙花数的条件为什么是那个
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-27 05:38

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表