首页 > 解决方案 > 简单的嵌套while循环

问题描述

非常感谢有人可以简单解释为什么在代码 1 中多次打印大“X”但在代码 2 中没有打印。唯一的区别在于 break 语句?

代码 1

flag=False
i=0
while not flag:
    print(f"big {i}")
    while True:
        i+=1
        print(i)
        if i==5:
            flag=True
            print("cond reached")
        break

输出

大 0 1 大 1 2 大 2 3 大 3 4 大 4 5 条件达到

代码 2

flag=False
i=0
while not flag:
    print(f"big {i}")
    while True:
        i+=1
        print(i)
        if i==5:
            flag=True
            print("cond reached")
            break

输出

大 0 1 2 3 4 5 条件达到

标签: pythonpython-3.x

解决方案


在第二段中,该break语句仅在 时执行i=5,因此代码一直停留在内循环中,直到 i = 5。发生这种情况时,标志设置为True,这意味着不再执行外循环。换句话说:

在第一段代码中,外层while循环被多次调用,因为内层循环总是中断,而在第二段代码中,外层while循环只被调用一次,因为内层循环只在何时中断i=5,这也设置了外循环的断开条件。


推荐阅读