鱼C论坛

 找回密码
 立即注册
12
返回列表 发新帖
楼主: heidern0612

[学习笔记] 【Pyhon 009讲心得体会】【摸球和水仙花数 】

[复制链接]
发表于 2020-6-9 15:45:50 | 显示全部楼层
这笔记,量真足
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-16 23:17:25 | 显示全部楼层
满满的都是干货,学习了!不过还是太笨,那个水仙花的,看一遍解析还有点恍惚,得自己跟着思路走几遍
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-19 21:56:36 | 显示全部楼层
水仙花数我的做法跟楼主的第一个做法基本一致。
但我尝试把temp赋值为临时变量,并将temp限定在range(100,1000)中
print temp之后却出现很多不符合规则的数,这是为什么呢,有木有老哥可以帮忙看看?
代码如下:
for a in range(0,10):
    for b in range(0,10):
        for c in range(0,10):
            temp = a*100 +b*10 +c
            for temp in range(100,1000):
                if a**3 +b**3+c**3 == temp:
                   print(temp)
                    

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

使用道具 举报

发表于 2020-6-21 17:08:07 | 显示全部楼层
刚开始看到这个题目的时候,感觉像是把30+课程的题目搬到这里来了,真真的是一脸的蒙啊,现在稍微理解点了,也放出来跟大伙分享下:
  while temp:
        sum = sum + (temp%10) ** 3
        temp //= 10         
这两句的while循环就相当于把已给定数字,从个位一直加到最高位,然后无限的循环;
if sum == i:
        print(i)
然后在这个地方做筛选,一旦通过计算出来的这个sum值和给定的i也就是temp一致,马上打印。
整体思路就是通过两部实现:
1. 无限运算,得到一个值sum;
2. 筛选temp==sum,然后打印当前值(不相等的就不显示,但仍然存在运算,只不过看不到而已)。
这种方式真是巧妙,而且这样设置,可能也比那个连续for循环的节省内存,不知道这一点理解的对不对。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-21 05:49:58 | 显示全部楼层
感谢分享 太有用了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-3 04:30:58 | 显示全部楼层
我来这里解惑的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-3 05:20:01 | 显示全部楼层
感谢分享学习心得,好让后辈们小走弯路。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-21 22:18

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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