首页 > 解决方案 > 如果 for 循环嵌套在内部,则忽略 while 条件

问题描述

我想知道为什么在 python 中,尝试时:

count = 0

while count < 3:
    for i in range(40):
        count += 1

实际上并不检查 while 循环条件。而在

count = 0

for i in range(40):
    while count < 3:
        count += 1

做。起初我假设在迭代完成之前可能必须忽略 while 循环。但是如果我运行 2 个不同的 for 循环

count = 0

while count < 3:
    for i in range(40):
        count += 1

    for i in range(40):
        count += 1

同样的事情也会发生!计数将变为 80。我经常使用 while 循环,很惊讶我从未遇到过这种情况。while 循环是否仅在其内容的末尾进行检查?如果是这样,我如何编写第一段代码的变体

标签: pythonfor-loopwhile-loop

解决方案


while循环体开始之前和循环体结束时检查循环的条件。如果您将更多循环放入主体中,它们都必须在while循环进入下一次迭代之前完成。

如果您想在循环主体完成之前显式终止循环,则需要使用break- 但如果您在嵌套循环内,则break只会终止最里面的循环!

如果由于某种原因您确实需要从内部循环内部结束外部循环,那么最干净的方法是将整个事情放入一个函数中并使用return. 另请参阅:如何打破多个循环?


推荐阅读