鱼C论坛

 找回密码
 立即注册
查看: 3141|回复: 14

python例题看不懂,求大神

[复制链接]
发表于 2015-6-13 20:13:06 From FishC Mobile | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 戴宇轩 于 2015-6-23 18:21 编辑

编写一个程序,求 100~999 之间的所有水仙花数。
引用: 如果一个 3 位数等于其各位数字的立方和,则称这个数为水仙花数。例如:153 = 1^3 + 5^3 + 3^3,因此 153 就是一个水仙花数
  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)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2015-6-13 20:23:14 | 显示全部楼层
#求各位上数的立方和
while temp:   
        sum = sum + (temp%10) ** 3  #累加各位上的立方
        temp //= 10         # 使用地板除,没除一次去掉最低位,如153//10 = 15
最后sum == i判断立方和是否等于原来的数
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2015-6-13 20:34:24 From FishC Mobile | 显示全部楼层
June_SR 发表于 2015-6-13 20:23
#求各位上数的立方和
while temp:   
        sum = sum + (temp%10) ** 3  #累加各位上的立方

麻烦问下sum这个函数是什么意思?翻译的不清楚?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-6-13 20:42:52 | 显示全部楼层
mazhiyang 发表于 2015-6-13 20:34
麻烦问下sum这个函数是什么意思?翻译的不清楚?



给你把过程写一下吧:比如153 sum先等于0,temp=153进入while循环 sum + (temp%10) ** 3=0+3**3=27,27赋值给sum,。temp//=10后,temp=15。再一次进入循环,sum + (temp%10) ** 3=27+5**3=152,152赋值给sum。。。。。

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
~风介~ + 3 + 3 感谢楼主无私奉献!

查看全部评分

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

使用道具 举报

 楼主| 发表于 2015-6-13 20:45:58 From FishC Mobile | 显示全部楼层
June_SR 发表于 2015-6-13 20:23
#求各位上数的立方和
while temp:   
        sum = sum + (temp%10) ** 3  #累加各位上的立方

感觉好复杂啊,一点都看不懂
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-6-13 20:51:06 | 显示全部楼层
代个数字进去想一下就行了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-6-13 23:06:22 | 显示全部楼层
你没必要非要跟着例题啊,自己做出来也是对的吧,还好理解,适合自己的才是最好的
我当时做的,单独求出百位,十位,个位,然后判断就行了 ,虽然是复杂了一点,但是更好理解
  1. def shuixianhua():
  2.     for i in range(100,1000):
  3.         temp = i
  4.         thefirst = i // 100   #百位
  5.         thesecond = (temp - thefirst*100) //10  #十位
  6.         thethird = temp - thefirst *100 -thesecond *10  #个位
  7.         if temp == thefirst**3 + thesecond**3 +thethird**3:
  8.             print(temp)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-6-13 23:08:59 | 显示全部楼层
本帖最后由 夏夜夏月 于 2015-6-13 23:14 编辑

例子这个
while temp:
        sum = sum + (temp%10) ** 3
        temp //= 10         # 注意这里要使用地板除哦~

就是把我的求百位,十位,个位放在了while循环里求了三次。
第一次是个位,第二次是十位,第三次是百位。然后分别把3次求得的立方 最后判断相等就是水仙花数了

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
~风介~ + 3 + 3 感谢楼主无私奉献!

查看全部评分

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

使用道具 举报

发表于 2015-6-14 02:18:07 | 显示全部楼层
藐视我也不懂爱
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-6-14 02:19:26 | 显示全部楼层
June_SR 发表于 2015-6-13 20:23
#求各位上数的立方和
while temp:   
        sum = sum + (temp%10) ** 3  #累加各位上的立方

怎么做啊
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-6-14 15:43:26 | 显示全部楼层
我想你的问题也就在这一段代码
  1.     while temp:
  2.         sum = sum + (temp%10) ** 3
  3.         temp //= 10         # 注意这里要使用地板除哦~
复制代码

首先,这是while循环语句, temp//=10 可以写成 temp = temp//10;
按照题干的意思temp取值在100-999之间,我也以153为例,最多也就循环3次,第四次temp =0 就跳出循环了;
第一次循环时, sum = sum + (temp%10) ** 3,temp这时是原值,还没有变化,所以temp%10,它的余数就是原值的个位数,还是以153为例,现在sum=0+3**3=27,
然后运行第二次循环,此时temp=153//10=15,此时sum=27+15%10**3=152
然后运行第三次循环,此时temp=15//10=1,此时sum=152+1%10**3=153


评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
~风介~ + 3 + 3 感谢楼主无私奉献!

查看全部评分

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

使用道具 举报

发表于 2015-6-17 08:35:32 | 显示全部楼层
  1. for i in range(100, 1000):
  2.         j = str(i)
  3.         if i == int(j[0])**3 + int(j[1])**3 + int(j[2])**3:
  4.                 print(i)
复制代码

这样不是更简单?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 2 反对 0

使用道具 举报

发表于 2015-6-19 11:14:19 | 显示全部楼层
我表示我只学过c语言 但是也能看懂!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-6-22 10:31:06 | 显示全部楼层
理解水仙花的数的概念不是很好写!
100到1000内的任意一个数,将其个十百 的三次方加起来 等于这个数本身啊
其中要把被拆的数字保护起来
最后sum的和 与保护的数字比较!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-3-12 21:47:42 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-16 12:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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