鱼C论坛

 找回密码
 立即注册
查看: 3256|回复: 10

关于第9课课后练习,求三位数中所有水仙花数的问题

[复制链接]
发表于 2016-11-22 12:06:32 | 显示全部楼层 |阅读模式
5鱼币
本帖最后由 pt2100 于 2016-11-22 13:24 编辑

我按照自己的思路写了个代码,得到的结果与小甲鱼一致。(其实是我看不懂小甲鱼写的代码,无奈)
有两个问题希望得到大家的帮助:
1)‘a,b,c=list(temp)’这句能否有更好的表达?##备注,这里更好的表达的意思是:通过一个表达式,将n位的水仙花数都能计算出来,比如3位数、4位数、5位数等等等等。
2)这段代码还能精简优化吗?我自己看着蛮乱的。
代码如下:

for i in range(100,1000):
    temp='%d'%i
    a,b,c=list(temp)
    a1=int(a)
    b1=int(b)
    c1=int(c)
    x=int(i)
    if x==a1**3+b1**3+c1**3:
        print(i)

最佳答案

查看完整内容

如果要想得到更高位数符合规则的数字,还是小甲鱼老师的编程比较方便,给每一刚做了注释,其实多读几遍就看懂了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-11-22 12:06:33 | 显示全部楼层
  1. def Narcissus():                         #定义一个函数Narcissus
  2.     for each in range(100, 1000):        #写一个for循环遍历100-1000的数
  3.         temp = each                      #遍历的数赋值给temp这个中间变量
  4.         sum = 0                          #设总数为sum并且给个初始值为0
  5.         while temp:                      #当temp这个中间变量不为零的时候
  6.             sum = sum + (temp%10) ** 3   #sum等于各个位上的数的三次方相加
  7.             temp = temp // 10            # 注意这里用地板除,直到商为零

  8.         if sum == each:                  #如果各个位的三次方的和等于遍历的函数则输出这个数
  9.             print(each, end='\t')

  10. print("所有的水仙花数分别是:", end='')
  11. Narcissus()
复制代码


如果要想得到更高位数符合规则的数字,还是小甲鱼老师的编程比较方便,给每一刚做了注释,其实多读几遍就看懂了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-11-22 13:02:34 | 显示全部楼层
用语法糖有时候晦涩难懂。
  1. [print(i) for i in range(100, 1000) if i == sum(map(lambda x: int(x)**3, str(i)))]
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-11-22 23:21:54 From FishC Mobile | 显示全部楼层
我也是刚刚看懂小甲鱼老师的代码,个人觉得小甲鱼老师的代码妙在通过地板除,取余的循环,也就是内部的while循环来达到我们分别求个,十,百位。手机看到你的问题,建议你再慢慢读下老师的程序。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-11-22 23:31:17 | 显示全部楼层
你初学,搞得那么复杂干吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-11-23 22:50:07 | 显示全部楼层
小茗同学 发表于 2016-11-22 15:31
如果要想得到更高位数符合规则的数字,还是小甲鱼老师的编程比较方便,给每一刚做了注释,其实多读几遍 ...

有解释也看不懂
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-11-23 22:51:13 | 显示全部楼层
艳艳酱 发表于 2016-11-22 23:21
我也是刚刚看懂小甲鱼老师的代码,个人觉得小甲鱼老师的代码妙在通过地板除,取余的循环,也就是内部的whil ...

谢谢你的解答,我感觉自己脑子一团浆糊,继续看书做题
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-11-23 22:51:50 | 显示全部楼层
Damn_it 发表于 2016-11-22 23:31
你初学,搞得那么复杂干吗?

想到做不到,有点尴尬嘛。继续看书做题的节奏
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-11-23 22:56:22 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-11-23 22:58:42 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-11-24 00:04:48 | 显示全部楼层
加油
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-24 01:51

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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