在循环中打破并继续

break 声明

break 语句在循环内执行时,控制流会立即中断循环:

i = 0
while i < 7:
    print(i)
    if i == 4:
        print("Breaking from loop")
        break
    i += 1

执行 break 语句后,不会评估循环条件。请注意,break 语句只允许语法内部循环。函数内的 break 语句不能用于终止调用该函数的循环。

执行以下操作打印每个数字,直到数字 4 满足 break 语句并且循环停止:

0
1
2
3
4
Breaking from loop

break 语句也可以在 for 循环中使用,这是 Python 提供的另一个循环结构:

for i in (0, 1, 2, 3, 4):
    print(i)
    if i == 2:
        break

执行此循环现在打印:

0
1
2

请注意,由于循环结束,因此不会打印 3 和 4。

如果一个循环有一个 else 子句 ,当循环通过 break 语句终止时它不会执行。

continue 声明

continue 语句将跳过循环的下一次迭代,绕过当前块的其余部分,但继续循环。与 break 一样,continue 只能出现在循环中:

for i in (0, 1, 2, 3, 4, 5):
    if i == 2 or i == 4:
        continue
    print(i)

0
1
3
5

请注意,24 没有打印,这是因为 continue 进入下一次迭代而不是继续到 print(i)i == 2i == 4

嵌套循环

breakcontinue 仅在单个循环级别上运行。以下示例将仅突破内部 for 循环,而不是外部 while 循环:

while True:
    for i in range(1,5):
        if i == 2:
            break    # Will only break out of the inner loop!

Python 没有能力同时突破多个循环级别 - 如果需要这种行为,将一个或多个循环重构为一个函数并用 return 替换 break 可能就是这样。

在函数中使用 return 作为 break

return 语句从函数退出,而不执行后,自带的代码。

如果你在一个函数内部有一个循环,那么从该循环内部使用 return 相当于拥有一个 break,因为循环的其余代码没有被执行( 请注意循环之后的任何代码也不执行 ):

def break_loop():
    for i in range(1, 5):
        if (i == 2):
            return(i)
        print(i)
    return(5)

如果你有嵌套循环,return 语句将破坏所有循环:

def break_all():
    for j in range(1, 5):
        for i in range(1,4):
            if i*j == 6:
                return(i)
            print(i*j)

将输出:

1 # 1*1
2 # 1*2
3 # 1*3
4 # 1*4
2 # 2*1
4 # 2*2
# return because 2*3 = 6, the remaining iterations of both loops are not executed