鱼C论坛

 找回密码
 立即注册
查看: 2717|回复: 3

[已解决]【已想通,谢谢】第9课的这个题目没有看懂

[复制链接]
发表于 2019-8-21 18:39:12 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 qiaosu 于 2019-8-21 19:23 编辑

编写一个程序,求 100~999 之间的所有水仙花数。
如果一个 3 位数等于其各位数字的立方和,则称这个数为水仙花数。例如:153 = 1^3 + 5^3 + 3^3,因此 153 就是一个水仙花数。

    for i in range(100,1000):
    sum = 0
    temp = i
    while temp:
        sum = sum + (temp%10) **3
        temp //= 10
    if sum == i:
        print(i)

第5. 6 两行什么意思呀,没有看懂……
最佳答案
2019-8-21 19:23:03
        sum = sum + (temp%10) **3        
        这一句的意思是:首先sum是定义为零(初始值),然后sum=初始sum + temp%10   这里% 是取余数的意思(比如 106 %10 会是10----6(余6) 所以106%10=6),所以temp%10就是取temp的个位数(因为temp是100-1000中的随机值)    然后**3就是三次方

        temp //= 10      
       // 是地板除法,(比如,106//10=10,直接去掉小数,是去掉不是四舍五入!你也可以理解为往小取整),因为上面我们拿出个位数来三次方了,所以这一步要去掉个位,取其他位上的数值来立方。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-8-21 18:42:31 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-8-21 18:57:45 | 显示全部楼层
while temp:
        sum = sum + (temp%10) **3 #将temp的最后一位也就是个位数拿出来,然后做三次方,例如:153%10 = 3,再把得出来的三次方的值加到sum里
        temp //= 10 # 把已经三次方了的个位数裁掉,第一循环过后只剩下百位和十位
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-8-21 19:23:03 | 显示全部楼层    本楼为最佳答案   
        sum = sum + (temp%10) **3        
        这一句的意思是:首先sum是定义为零(初始值),然后sum=初始sum + temp%10   这里% 是取余数的意思(比如 106 %10 会是10----6(余6) 所以106%10=6),所以temp%10就是取temp的个位数(因为temp是100-1000中的随机值)    然后**3就是三次方

        temp //= 10      
       // 是地板除法,(比如,106//10=10,直接去掉小数,是去掉不是四舍五入!你也可以理解为往小取整),因为上面我们拿出个位数来三次方了,所以这一步要去掉个位,取其他位上的数值来立方。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-13 02:41

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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