鱼C论坛

 找回密码
 立即注册
查看: 2304|回复: 13

[已解决]第九讲的动动手,第二个马马虎虎看得懂,第三个完全懵的

[复制链接]
发表于 2017-11-5 21:00:40 | 显示全部楼层 |阅读模式

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

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

x
看不懂

看不懂

看不懂
最佳答案
2017-11-6 09:55:32
第1题的运算原理就是利用取余运算(%)和地板除法(// 取整除法)来分解每一个三位整数。任何一个三位数与10取余,就会得到个位数的数值,比如357 % 10 得到 7 。而任何一个三位数与10进行取整除法,就会移除个位数。比如357 // 10 得到35。利用这一方法,就能拆分一个三位数,从而对其百位、十位和个位的数值进行立方和运算,最后判断立方和 sum 是否等于迭代出来的 i ,如果等于,就print( i ),否则就继续下一轮运算。

一行一行来分析小甲鱼的代码:
1、 for i in range(100,1000):      #这表示要从100到999逐个进行运算测试,符合条件的就输出;
2、 sum = 0  # sum是用来表示立方和的变量;
3、temp = i  # temp的初始值取决于 for 循环迭代出来的数值;
4、进入while循环体,循环测试条件是 temp(也就是说,只有temp为零时,就终止while循环)
5、循环体内包含两个运算:
      1) sum = sum + (temp % 10)**3    #前面说过了,temp与10取余得到这个三位数的个位数值;
                                                                #以153举例,这个运算式得到的结果是sum = 27
                                                                #153 % 10 等于 3 ,3的3次方等于27,27+0 = 27
                                                                #然后进行第二步运算
       2) temp //= 10   # 这个算式等同于temp = temp // 10
                                    # temp现在的值是153,计算结果就是15,这时候temp的值就变成15了。
       3)因为temp不等于0,所以继续进入while循环体重复以上两步运算。
       4)sum = sum + (temp%10)**3   # 15%10等于5,5的3次方等于125,125+27等于152
       5)temp //= 10  # 15 // 10 等于1,temp=1,temp不等于0就继续while循环
       6)1 % 10 等于 1 ,1的3次方等于1,sum = 152 + 1 等于 153
       7)1 // 10 等于0,temp归零,退出while循环
6、然后进行 if 判断,如果 i (也就是迭代出来的三位整数)等于 sum (也就是各位数值的立方和)呢么就print( i )





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

使用道具 举报

发表于 2017-11-5 21:29:56 | 显示全部楼层
看了你需要重新看一遍视频,如果还不行,只能回去补补中学的数学知识了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-5 22:03:35 | 显示全部楼层
三个红球、三个黄球、6个绿球,一共12个球任意抽取8个球进行颜色组合:
比   如:0个红球、2个黄球、6个绿球  (共8个)
又或者:2个红球、3个黄球、3个绿球 (共8个)

用三个for循环进行三色球的全组合计算:
红球可以是0个、1个、2个、3个,所以是for red in range(0,4)   # range(0,4) 表示从0开始,到3结束;

黄球可以是0个、1个、2个、3个,所以是for yellow in range(0,4)  # range(0,4) 表示从0开始,到3结束;

绿球最少要2个(因为加上全部3个红球和全部3个黄球正好8个),所以是for green in range(2,7)

最后就是判断输出,如果red + yellow + green == 8 那么就 print(red  yellow  green)
输出的结果就是8个球的所有颜色组合

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

使用道具 举报

 楼主| 发表于 2017-11-5 22:18:12 | 显示全部楼层
铁棍阿童木 发表于 2017-11-5 22:03
三个红球、三个黄球、6个绿球,一共12个球任意抽取8个球进行颜色组合:
比   如:0个红球、2个黄球、6个绿 ...

第一个呢,,恩人!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-5 22:42:53 | 显示全部楼层
本帖最后由 铁棍阿童木 于 2017-11-5 22:44 编辑
不想放弃, 发表于 2017-11-5 22:18
第一个呢,,恩人!


第 1 个 :水仙花数问题(如果有一个三位整数,它的百位数的立方 + 十位数的立方 + 个位数的立方 正好等于这个三位数,那么这个三位数就是水仙花数)
                              如:153 = 1的立方 + 5的立方 + 3的立方
                                            = 1 + 125 + 27
                                            = 153

小甲鱼这个稍微显复杂,其实有个简单的求水仙花数的方法:用三个for循环遍历所有三位数组合,进行求解:
for a in range(1,10)     # a表示百位数,百位数只可能是1到9
    for b in range(0,10) # b表示十位数,十位数只可能是0到9
        for c in range(0,10) # c表示个位数,个位数只可能是0到9
            if a**3 + b **3 + c**3 == a*100 + b*10 + c:
                print(a*100 + b*10 + c)   #



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

使用道具 举报

 楼主| 发表于 2017-11-5 22:58:40 | 显示全部楼层
铁棍阿童木 发表于 2017-11-5 22:42
第 1 个 :水仙花数问题(如果有一个三位整数,它的百位数的立方 + 十位数的立方 + 个位数的立方 正好 ...

能加下你QQ不
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-5 23:22:34 | 显示全部楼层

我qq号码都忘记了,好多年都没用过了!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-11-5 23:25:10 | 显示全部楼层
铁棍阿童木 发表于 2017-11-5 22:42
第 1 个 :水仙花数问题(如果有一个三位整数,它的百位数的立方 + 十位数的立方 + 个位数的立方 正好 ...

能帮我分析下他第一个代码的思路吗
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-6 09:55:32 | 显示全部楼层    本楼为最佳答案   
第1题的运算原理就是利用取余运算(%)和地板除法(// 取整除法)来分解每一个三位整数。任何一个三位数与10取余,就会得到个位数的数值,比如357 % 10 得到 7 。而任何一个三位数与10进行取整除法,就会移除个位数。比如357 // 10 得到35。利用这一方法,就能拆分一个三位数,从而对其百位、十位和个位的数值进行立方和运算,最后判断立方和 sum 是否等于迭代出来的 i ,如果等于,就print( i ),否则就继续下一轮运算。

一行一行来分析小甲鱼的代码:
1、 for i in range(100,1000):      #这表示要从100到999逐个进行运算测试,符合条件的就输出;
2、 sum = 0  # sum是用来表示立方和的变量;
3、temp = i  # temp的初始值取决于 for 循环迭代出来的数值;
4、进入while循环体,循环测试条件是 temp(也就是说,只有temp为零时,就终止while循环)
5、循环体内包含两个运算:
      1) sum = sum + (temp % 10)**3    #前面说过了,temp与10取余得到这个三位数的个位数值;
                                                                #以153举例,这个运算式得到的结果是sum = 27
                                                                #153 % 10 等于 3 ,3的3次方等于27,27+0 = 27
                                                                #然后进行第二步运算
       2) temp //= 10   # 这个算式等同于temp = temp // 10
                                    # temp现在的值是153,计算结果就是15,这时候temp的值就变成15了。
       3)因为temp不等于0,所以继续进入while循环体重复以上两步运算。
       4)sum = sum + (temp%10)**3   # 15%10等于5,5的3次方等于125,125+27等于152
       5)temp //= 10  # 15 // 10 等于1,temp=1,temp不等于0就继续while循环
       6)1 % 10 等于 1 ,1的3次方等于1,sum = 152 + 1 等于 153
       7)1 // 10 等于0,temp归零,退出while循环
6、然后进行 if 判断,如果 i (也就是迭代出来的三位整数)等于 sum (也就是各位数值的立方和)呢么就print( i )





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

使用道具 举报

 楼主| 发表于 2017-11-6 10:25:34 | 显示全部楼层
铁棍阿童木 发表于 2017-11-6 09:55
第1题的运算原理就是利用取余运算(%)和地板除法(// 取整除法)来分解每一个三位整数。任何一个三位数与1 ...

谢谢啊,大神,能加个好友吗
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-6 10:34:55 | 显示全部楼层
不想放弃, 发表于 2017-11-6 10:25
谢谢啊,大神,能加个好友吗

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

使用道具 举报

发表于 2017-11-6 10:35:25 | 显示全部楼层

不是大神,我也刚学没多久!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-11-6 10:38:02 | 显示全部楼层
不想放弃, 发表于 2017-11-6 10:25
谢谢啊,大神,能加个好友吗

temp//10的作用是得到它的百位数吗
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-11-6 22:21:00 | 显示全部楼层
铁棍阿童木 发表于 2017-11-6 10:35
不是大神,我也刚学没多久!

有联系方式不
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-3 17:34

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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