关于第009讲:了不起的分支和循环3 课后习题答案问题
第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)
请问哪一个答案是正确的? 甲鱼哥这个是对的,红球有三个嘛,所以是for i in range(0, 4):
因为在这里面i是取不到4的,只能取到3,如果是for i in range(0, 3):
,那么就变成了2个红球了 range()函数用于生成一个从start开始,stop结束的数字序列(可迭代对象)。注意,不包括stop。所以range(0, 3)会生成一个从0到2的数字序列,不符合程序的本意。
range(start, stop)函数将生成一个从 start 开始,到 stop 结束的整数数列,常常与for搭配,注意,这个其中是不包括stop的,也就是说按照你这个来,它是不包括3的,我想问一下,那它是不是就只会取出这样一种数列,也就是0,1,2,可是,难道不能拿3个红球吗?不能拿3个黄球吗?可以啊,怎么不行,红球黄球都取3个,然后2个绿球,加起来一共8个球,这难道不符合题意,而且,range(2, 7) 是产生 这 5 个数,这里也表示了有取到2个绿球这种情况,当然,小甲鱼的是对的。
页:
[1]