第十一章嵌套与可变循环之使用嵌套循环,,
第十一章嵌套与可变循环之使用嵌套循环,,
使用嵌套循环
那么我们能够用嵌套循环做些什么呢?嗯,嵌套循环最擅长的工作就是得出一系列决定的所有可能的排列和组合。
术语箱
要解释这个问题,最好的办法就是举一个例子,下面假设你要在学校开春季交易会期间开个热狗问题的决策树。
每个决策点都有两种选择,是(Y)或者否(N)这棵树的每一条不同的路径分别描述了热狗各部分的不同的组合。这里突出显示的路径是这样的选择,热狗选择Y,小面包选择N,芥末酱选择Y,番茄酱选择Y.
现在我们使用嵌套循环来列出所有组合,也就是这棵决策树的所有路径,由于这里有5个决策点,所以在我们的决策树中有5层,相应地,在程序中就会有个嵌套循环。(上图只显示了决策树的前4层)
在IDLE(或SPE)编辑器窗口中键入代码清单11-6中的代码,保存为htdogl.py。
看到这些循环是如何一个套一个的了吗?这正是嵌套循环,即一个循环放另一个循环中。
外循环(热狗循环)运行两次
对热狗循环的每一次迭代,小面包循环运行两次,所以它会运行2 X 2 = 4次。
对小面包循环的每一次迭代,番茄酱循环运行两次,所以它会运行2 X 2 X 2 = 4次。
依此类推
最内层循环(嵌套最深的循环,也就是洋葱循环)会运行2 X 2 X 2 X 2 X 2 =32次。这就涵盖了所有可能的组合。因此共有32种可能的组合。
如果运行代码清单11-6中的程序,会得到下面的结果:
这5个嵌套循环可以得到热狗、小面包、番茄酱、芥末酱和洋葱的所有可能的组合。
代码清单11-6中,我们使用了制表符来实现来对齐,也就是符号。我们还没有讨论到打印格式,不过如果你想了解更多,可以先看看第21章。
这里使用了一个名为count的变量对各个组合编号,例如,一个带小面包的芥末酱的热狗就是#27,当然,这32个组合中有些组合并没有实际意义,(如果没有小面包,但有番茄酱和芥末酱,这样的热狗肯定会弄得一团糟。)要知道有句话是这么说的:“顾客就是上帝!”
评论关闭