有红、黄、蓝三种颜色的球,其中红球 3 个,黄球 3 个,绿球 6 个。先将这 12 个球混合放在一个盒子中,从中任意摸出 8 个球,编程计算摸出球的各种颜色搭配。
代码如下:
i = 1
for nr in range(0, 4): # nr : number of red balls 红球个数
for ny in range(0, 4): # ny : number of yellow balls 黄球个数
if nr + ny >= 2:
print('第{0}次组合为'.format(i))
print('红球数目为:{0}'.format(nr))
print('黄球数目为:{0}'.format(ny))
print('绿球数目为:{0}'.format(8 - nr - ny))
i += 1
下面将此程序拆分,分块讲解:
-
一共要拿出8个球,而绿球的数目6个,换句话来说,红球加上黄球的数目至少为2。剩下的其实就是让电脑自己进行迭代,然后只要满足”条件“,就将小球的数量输出。那么”条件“是什么呢?
-
条件 假设取出的红球数目为nr,黄球数目为ny,那么只需要红黄绿三色球加起来等于8个就好了,再结合(1),那么条件就是
nr + ny >= 2
-
关于
.format
的用法可以参考我之前的一篇博客 -
关于两个
for
循环,实际就是给电脑这么一列数去判断
对于外层的for
循环
第一步:nr = 0 then ny = 0, 1, 2, 3
第二步:nr = 1 then ny = 0, 1, 2, 3
第三步:nr = 2 then ny = 0, 1, 2, 3
第四步:nr = 3 then ny = 0, 1, 2, 3
例如拿第四步举例,从最外层for
开