鱼C论坛

 找回密码
 立即注册
查看: 1572|回复: 3

[已解决]关于第009讲:了不起的分支和循环3 课后习题答案问题

[复制链接]
发表于 2020-8-15 20:19:34 | 显示全部楼层 |阅读模式

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

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

x
第009讲:了不起的分支和循环3中小甲鱼的答案是不是给错了?
动动手:2. 三色球问题
有红、黄、蓝三种颜色的求,其中红球 3 个,黄球 3 个,绿球 6 个。先将这 12 个球混合放在一个盒子中,从中任意摸出 8 个球,编程计算摸出球的各种颜色搭配。

小甲鱼的答案:
print('red\tyellow\tgreen')
for red in range(0, 4):
    for yellow in range(0, 4):
        for green in range(2, 7):
            if red + yellow + green == 8:
                # 注意,下边不是字符串拼接,因此不用“+”哦~
                print(red, '\t', yellow, '\t', green)


我认为:
print('red\tyellow\tgreen')
for red in range(0, 3):
    for yellow in range(0, 3):
        for green in range(2, 7):
            if red + yellow + green == 8:
                # 注意,下边不是字符串拼接,因此不用“+”哦~
                print(red, '\t', yellow, '\t', green)

请问哪一个答案是正确的?
最佳答案
2020-8-15 20:49:33
甲鱼哥这个是对的,红球有三个嘛,所以是for i in range(0, 4):
因为在这里面i是取不到4的,只能取到3,如果是for i in range(0, 3):
,那么就变成了2个红球了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-8-15 20:49:33 | 显示全部楼层    本楼为最佳答案   
甲鱼哥这个是对的,红球有三个嘛,所以是for i in range(0, 4):
因为在这里面i是取不到4的,只能取到3,如果是for i in range(0, 3):
,那么就变成了2个红球了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-15 20:49:45 | 显示全部楼层
range()函数用于生成一个从start开始,stop结束的数字序列(可迭代对象)。注意,不包括stop。所以range(0, 3)会生成一个从0到2的数字序列,不符合程序的本意。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-29 16:42:04 | 显示全部楼层

range(start, stop)函数将生成一个从 start 开始,到 stop 结束的整数数列,常常与for搭配,注意,这个其中是不包括stop的,也就是说按照你这个来,它是不包括3的,我想问一下,那它是不是就只会取出这样一种数列,也就是0,1,2,可是,难道不能拿3个红球吗?不能拿3个黄球吗?可以啊,怎么不行,红球黄球都取3个,然后2个绿球,加起来一共8个球,这难道不符合题意,而且,range(2, 7) 是产生 [2, 3, 4, 5, 6] 这 5 个数,这里也表示了有取到2个绿球这种情况,当然,小甲鱼的是对的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-18 04:40

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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