在(一)中,我们了解了Python中while循环语句嵌套用法的运行机制,但我们仅仅只是在每一层while循环条件均满足的情况去讨论,如果while循环嵌套语句中,某个while循环的条件不满足,或者循环到一定次数后条件不再满足循环的要求,这时候会发生什么事情呢?这就是我们接下来需要搞清楚的问题
仍然是以跑环形圈的例子来讲解,要是一个person在跑双环形圈道的时候发现,小环形圈道路不通了(应该是被跳广场舞的大妈给占道了),那怎么办呢?
答案是:直接跳过跑小环,抄近路,只跑大环道。
于是,我们用跑圈的推理结果去类比,看下面的while循环嵌套的代码小例子。
可以发现,当我们运行程序时,外层while循环可以正常进行,print()语句输出AAAAA,a加1。
再来看内层while循环,发现b=1不满足条件,也就是说,内层while循环不能进行,这时,我们用上面跑圈的例子类比推理的话,代码运行的结果应该是:
内层while循环还没开始就已经结束,直接跳过内层while循环,回到外层while循环,a=2仍然满足循环条件,print()语句再次输出AAAAA,a加1,a=3,不满足外层while循环结束,外层while循环进行了两次,内层while循环进行了0次。
让我们看看真实的代码运行结果:
结果与我们的推理一致。
此时我们可能会想,上面的例子是一开始内层while循环的条件不满足,不能进行循环,那如果我们一开始就是最外层while循环的条件不满足,结果又会怎么样呢?
显然, person一开始就要跑的外环都被占了,内环没被占好像没什么用,还是跑不了。
让我们用实际的代码运行来看看:
可以看到,一开始外层while循环的条件就不满足了,还有内层while循环的条件依然满足。
让我们来看看运行的结果:
可以发现啥都没有,也就是说,由于外层while循环不能进行,下面的内层while循环也就不能顺利进行,导致整个while循环嵌套代码没有循环。
以上均为两个while循环嵌套的代码运行结果,我们在再来看看三个while循环嵌套的代码运行结果如何:
(1)首先是最外层while循环不满足条件,不能进行循环,其他均满足循环条件:
可以发现啥都没有,也就是说,由于外层while循环不能进行,下面的内层while循环也就不能顺利进行,导致整个while循环嵌套代码没有循环。
(2)其次是中间层while循环不满足条件,不能进行循环,其他均满足循环条件:
可以发现,最外层while循环可以进行,而中间层的while循环由于条件不满足不能进行,下面的最内层while循环也不能顺利进行。
(3)最后是层while循环不满足条件,不能进行循环,其他均满足循环条件:
可以发现,最外层和中间层的while循环可以进行,而最内层的while循环由于条件不满足不能进行。
由此我们会发现:
while循环嵌套代码中,如果某一层while循环不满足条件了,该层循环,以及其以下的while循环将都不能循环,即使均满足循环条件。但该层以上的while循环仍然可以运行。