鱼C论坛

 找回密码
 立即注册
查看: 1848|回复: 11

python第9课习题

[复制链接]
发表于 2016-6-27 00:05:35 | 显示全部楼层 |阅读模式
1鱼币
for i in range(100, 1000):
    sum = 0
    temp = i
    while temp:
        sum = sum + (temp%10) ** 3
        temp //= 10         # 注意这里要使用地板除哦~
    if sum == i:
        print(i)

这是水仙花的那道题, sum = sum + (temp%10) ** 3
        temp //= 10         #
不太懂这两行是怎么实现题目中数字各个位上的立方和的,符号含义我都懂,只是不懂句子的含义。。。。求不要解释%,**这些符号我都懂意思。。。

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-6-27 02:42:06 | 显示全部楼层
这是要找100-1000内本身等于各个位数上数的立方和的数字吧
while temp:
        sum = sum + (temp%10) ** 3
        temp //= 10         # 注意这里要使用地板除哦~
sum = sum + (temp%10) ** 3 # 这个语句,取temp的个位数字的3次方并加入到sum中
temp //= 10  #这个语句实现temp的变化,使用地板除后相当于将原temp去掉个位数字,将新数重新给temp
当temp为0时,循环结束
例如 987,sum=0+7**3, 987//10==98
再将98传入,一直到temp经地板除变为0后循环停止

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-6-27 22:37:12 | 显示全部楼层
python大法好 发表于 2016-6-27 02:42
这是要找100-1000内本身等于各个位数上数的立方和的数字吧
while temp:
        sum = sum + (temp%10) * ...

那么根据答案,370,371,401都是水仙花数,例如370,sum=0+(0%10)**3=0
370//10=37 再将37传入,然后呢?怎么证明370 就是水仙花数???还是不太懂
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-6-28 01:30:30 | 显示全部楼层
zmq 发表于 2016-6-27 22:37
那么根据答案,370,371,401都是水仙花数,例如370,sum=0+(0%10)**3=0
370//10=37 再将37传入,然后 ...

再将37传入,sum = 0 + 7**3 =343,;37//10==3
再将3 传入,sum = 343 + 3**3 = 370; 3//10 ==0 -〉temp
此时 i ==370, sum ==370, temp == 0
while temp  为假,循环结束
if  370 ==370 为真,打印370
i 变为371,再次执行程序,最后 if 371 == 371 为真,打印371
i 变为 372 ,。。。。 ; if 378 ==372 为假,不打印
。。。。。
。。。
一直到999结束
如果弄不清,建议还是把循环部分知识再了解一下吧!

评分

参与人数 1荣誉 +4 鱼币 +2 贡献 +2 收起 理由
zmq + 4 + 2 + 2

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-6-28 07:29:12 | 显示全部楼层
python大法好 发表于 2016-6-28 01:30
再将37传入,sum = 0 + 7**3 =343,;37//10==3
再将3 传入,sum = 343 + 3**3 = 370; 3//10 ==0 -〉tem ...

非常感谢,搞懂了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-6-28 10:07:21 | 显示全部楼层
一看你就不太会善用搜索,我前一阵子刚刚发了帖子名字里就有水仙花数……

不过作为vip玩家我支持你多问问题~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-7-2 10:29:29 | 显示全部楼层
哈哈 我也有一样的问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-7-31 09:06:58 | 显示全部楼层
for i in range(100,1000):
    if i==(i//100)**3+(i%100//10)**3+(i%10)**3:
        print('这是一个水仙花数',i)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-8-5 09:45:00 | 显示全部楼层
参考4楼
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-11-17 10:53:58 | 显示全部楼层
一般求x是否能整除y,是通过
if x % y == 0 :
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-11-17 11:03:02 | 显示全部楼层
56789 % 10 = 9
56789 // 10 = 5678

5678 % 10 = 8
5678 // 10 = 567

567 % 10 = 7
567 // 10 = 56

56 % 10 = 6
56 // 10 = 5

5 % 10 = 5
5 // 10 = 0 (结束循环.^_^, 你get到这里的规律没有)

a 就是先将后面的个位通过%取出来进行运算得到个位的立方,
b 然后再将个位通过//去掉
不断地执行a, b步骤,直到个位//10为0为止

如果还是没有弄懂,那就@我吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-12-25 15:40:07 | 显示全部楼层
正好想问这个问题的,哈哈
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-26 12:32

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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