鱼C论坛

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

Python第九课关于水仙花数的代码没看懂答案!!!

[复制链接]
发表于 2017-6-18 21:53:57 | 显示全部楼层 |阅读模式

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

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

x
小甲鱼答案
1.        for i in range(100, 1000):
2.            sum = 0
3.            temp = i
4.            while temp:
5.                sum = sum + (temp%10) ** 3
6.                temp //= 10         # 注意这里要使用地板除哦~
7.            if sum == i:
8.                print(i)

另一种广泛的答案
for i in range(1,10):
    for j in range(0,10):
        for k in range(0,10):
           if i*100+j*10+k==i**3+j**3+k**3:
                print(i*100+j*10+k)

明显感觉小甲鱼的答案不错,但是真心没看懂?一脸懵逼?是一种算法么?求大神解答!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-6-19 09:10:19 | 显示全部楼层
你没看懂的地方应该是下面这一部分吧
while temp:
        sum = sum + (temp%10) ** 3
        temp //= 10
这块其实就是求每一位数的立方和
比如temp=123
第一次循环:
sum开始为0,temp%10=3,sum = sum + (temp%10) ** 3(把3的立方加到了sum中),temp//=10(地板除是只保留除法得数的整数部分,计算之后temp=12)
下面就重复以上步骤了,需要注意的是到第三次循环时,开始temp=1,经过temp//=10,temp变为0,不再满足循环要求,就跳出循环了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2017-6-19 20:15:20 | 显示全部楼层
shuofxz 发表于 2017-6-19 09:10
你没看懂的地方应该是下面这一部分吧

这块其实就是求每一位数的立方和

万分感谢回答,昨天在贴吧里搜索时,网页无法显示,今天好了,一搜索好多这个问题的答案,再次感谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-6-20 14:59:21 | 显示全部楼层
total =0
for i in range (100, 1000,1):
    s = str (i)
    n1 = int(s[0])
    n2 = int(s[1])
    n3 = int(s[2])
    if i == n1**3+n2**3+n3**3:
        total +=1
        print ("%d是第%d个水仙花数", i ,total)
    i+=1
这是我写的, 感觉你的思路也很有意思.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-10-8 22:54

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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