Python中while循环的条件判定时机及执行逻辑疑问
问题解答
第一个代码的执行流程与输出原因
我们一步步拆解第一个代码的执行过程:
- 初始值:
l = 1,r = 2 - 外层
while l < r:此时1 < 2为True,进入外层循环体 - 内层
while l < 50:l从1开始持续自增,直到l = 50时,l < 50不成立,内层循环结束 - 执行
print(l):输出50 - 执行
l += 1:l变为51 - 外层循环体执行完毕,回到条件判断:
51 < 2为False,外层循环退出 - 执行最后一行
print(l):输出51
这就是为什么最终输出是50、51,而非你猜测的50或1——最后一行的print(l)会在外层循环结束后执行,而内层循环已经把l从1累加到了50,后续又自增到了51。
while循环的条件判定时机
Python的while循环是先判断条件,再执行循环体,并非“仅在每次迭代完成后才判定”:
- 每次准备进入循环体前,都会先检查条件是否为True,只有条件满足才会执行循环体内的代码
- 当一次循环体的代码全部执行完毕后,会再次回到条件判断的位置,重新检查条件,决定是否开启下一次循环
提前跳出循环的方式
不一定必须添加你写的那种if语句才能提前跳出循环,break语句本身就是用来直接终止当前所在的循环的,if只是用来判断触发跳出的条件而已。比如你可以简化逻辑,直接在需要跳出的位置用break:
l = 1 r = 2 while l < r: while l < 50: l += 1 print(l) if l > 2: break # 直接跳出外层循环 l += 1 print(l)
这样执行后,输出会是50、50,因为跳出外层循环后,最后一行print(l)输出的是50。
内容的提问来源于stack exchange,提问作者Lee
相关产品推荐
相关产品推荐

