鱼C论坛

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

[已解决]第9课课后习题 水仙花数

[复制链接]
发表于 2018-3-7 18:33:41 | 显示全部楼层 |阅读模式

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

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

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

答案如上:看不懂呢,帮忙解释一下,难道还要数学基础?

以下是我写的,也能算出来,请多指教,谢谢
for i in range(100,1000):
    if (i//100)**3 + (int(i/10)-10*(i//100))**3 + (i%10)**3== i:
        print(i)
    else:
        i += 1
        
最佳答案
2018-3-7 18:35:57
你都能写出来了。还能不理解。

不知下面这么说你能不能理解
水仙花数是指一个 n 位数(n≥3 ),
它的每个位上的数字的 n 次幂之和等于它本身(例如:1^3 + 5^3+ 3^3 = 153)

假设这个数为153:
        
循环1:temp=153
153 % 10 = 3 #求出 153的个位
3 ** 3 = 27
153 // 10 = 15 #去掉 153的个位


循环2:temp=15
15 % 10 = 5 #求出 15个位
5 ** 3 = 125
15 // 10 = 1 #去掉 15的个位

循环3:temp=1
1 % 10 = 1 # 求出1的个位
1 ** 3 = 1
1 // 10 = 0 # 去掉 1的个位

循环4:temp=0 退出循环
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-3-7 18:35:57 | 显示全部楼层    本楼为最佳答案   
你都能写出来了。还能不理解。

不知下面这么说你能不能理解
水仙花数是指一个 n 位数(n≥3 ),
它的每个位上的数字的 n 次幂之和等于它本身(例如:1^3 + 5^3+ 3^3 = 153)

假设这个数为153:
        
循环1:temp=153
153 % 10 = 3 #求出 153的个位
3 ** 3 = 27
153 // 10 = 15 #去掉 153的个位


循环2:temp=15
15 % 10 = 5 #求出 15个位
5 ** 3 = 125
15 // 10 = 1 #去掉 15的个位

循环3:temp=1
1 % 10 = 1 # 求出1的个位
1 ** 3 = 1
1 // 10 = 0 # 去掉 1的个位

循环4:temp=0 退出循环
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-7 19:08:52 | 显示全部楼层
感谢您的耐心解答,太详细了。
我知道我问题在哪里了,我对while循环还是不太理解,您列出的循环2、3、4我都没有想到是这么算的。
太感谢了!
另外我的答案中,以下语句是不是多余的?最好怎么写?
else:
        i += 1
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-7 20:01:17 | 显示全部楼层
zhiyuzhishan 发表于 2018-3-7 19:08
感谢您的耐心解答,太详细了。
我知道我问题在哪里了,我对while循环还是不太理解,您列出的循环2、3、4我 ...

多余
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-8 07:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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