鱼C论坛

 找回密码
 立即注册
查看: 1753|回复: 2

[已解决]第009讲中的水仙花数编码解释

[复制链接]
发表于 2018-1-7 17:10:51 | 显示全部楼层 |阅读模式

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

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

x
for i in range (100,999):
    sum=0
    temp=i
    while temp:
        sum=sum+(temp%10)**3###这一行怎么理解啊?
        temp//=10####这一行如何理解?
    if sum==i:
        print(i)

其中,temp%10表示temp除以10的余数,例如temp=153,temp%10=3,则(temp%10)**3=27,前面的sum+sum+......如何理解?
temp//=10应该是表示temp除以10后数值的整数部分,在这里是想干嘛?
最佳答案
2018-1-7 17:24:09
本帖最后由 zero月蚀的假面 于 2018-1-7 17:27 编辑

比如水仙花数:153
①temp=153,sum=(153%10)**3=27,(个位的三次方)temp=153//10=15
②temp=15,sum=27+(15%10)**3=152,(个位+十位的三次方)temp=15//10=1
③temp=1,sum=152+(1%10)**3=153,(个位+十位+百位的三次方)temp=1//10=0
④temp=0循环结束
temp//10让其位数向左移动一位,然后对其进行三次方运算,并且当temp=0也是while循环语句的结束标志
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-1-7 17:22:18 | 显示全部楼层
水仙花数是它各位数字的立方和等于它本身
temp这个中间变量取它的余数就是个位上的数
然后用temp//10得到的数的个位就是原来的十位,然后再循环,取现在的个位的立方,并将它与原来的个位和相加
一直循环,直到temp为零,然后现在得到的数sum就是各位数字的立方和
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2018-1-7 17:24:09 | 显示全部楼层    本楼为最佳答案   
本帖最后由 zero月蚀的假面 于 2018-1-7 17:27 编辑

比如水仙花数:153
①temp=153,sum=(153%10)**3=27,(个位的三次方)temp=153//10=15
②temp=15,sum=27+(15%10)**3=152,(个位+十位的三次方)temp=15//10=1
③temp=1,sum=152+(1%10)**3=153,(个位+十位+百位的三次方)temp=1//10=0
④temp=0循环结束
temp//10让其位数向左移动一位,然后对其进行三次方运算,并且当temp=0也是while循环语句的结束标志
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-5 12:50

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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