鱼C论坛

 找回密码
 立即注册
查看: 2574|回复: 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)

明显感觉小甲鱼的答案不错,但是真心没看懂?一脸懵逼?是一种算法么?求大神解答!!!
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2017-6-19 09:10:19 | 显示全部楼层
你没看懂的地方应该是下面这一部分吧
  1. while temp:
  2.         sum = sum + (temp%10) ** 3
  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,不再满足循环要求,就跳出循环了。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

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

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

万分感谢回答,昨天在贴吧里搜索时,网页无法显示,今天好了,一搜索好多这个问题的答案,再次感谢!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-6-20 14:59:21 | 显示全部楼层
  1. total =0
  2. for i in range (100, 1000,1):
  3.     s = str (i)
  4.     n1 = int(s[0])
  5.     n2 = int(s[1])
  6.     n3 = int(s[2])
  7.     if i == n1**3+n2**3+n3**3:
  8.         total +=1
  9.         print ("%d是第%d个水仙花数", i ,total)
  10.     i+=1
复制代码

这是我写的, 感觉你的思路也很有意思.
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-7 09:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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