跳转到主要内容
模块 2 · 第 3 课(共 4)课程中的7/36~10 min
模块课程(3/4)

Break、Continue 和 else 循环

在循环内(for 和 while),您可以使用以下命令更改正常流程: 三个构造:

  • break — 立即退出循环。
  • continue — 跳过主体的其余部分并跳转到下一个迭代。
  • else(在循环上)— 当循环在没有 break 的情况下终止时执行。

break

Python
for n in [3, 7, 11, 4, 9]:
    if n % 2 == 0:
        primo_pari = n
        break
primo_pari  # 4

break 尽快停止循环。 break 之后的任何内容 当前迭代的主体未执行。

continue

Python
risultati = []
for n in range(1, 11):
    if n % 2 == 0:
        continue   # skip evens
    risultati.append(n * n)
risultati  # [1, 9, 25, 49, 81]

将 continue 视为“进入下一次迭代”。它用于过滤项目 无需再添加一级缩进。

循环中的 else (Python 习惯用法)

Python 的一个特性:循环也可以有一个 else,仅在以下情况下执行: 循环自然终止(没有break)。它非常适合搜索:

Python
target = 7
for n in [2, 4, 6, 8]:
    if n == target:
        trovato = True
        break
else:
    trovato = False
trovato  # False

将其读作:"对于列表中的每个 n;如果采用 break 分支,请跳过 其他;否则执行else".

嵌套循环:break仅退出最内层循环

Python
for x in range(3):
    for y in range(3):
        if x == y == 1:
            break
        print(x, y)

break 仅退出 for y,而不退出 for x。要退出两者,您必须使用 标志或函数+ return。

不寻常的循环...else 构造

在 Python 中, for 和 while 循环都可以具有可选的 else 子句。 仅当循环正常完成时才执行 else 块(即没有遇到 break 语句)。这对于搜索算法非常有帮助(例如“搜索一个元素:如果找到,则中断;否则,报告未找到”)。

自己尝试一下

锻炼#python.m2.l3.e1
尝试:0加载中...

给定列表“numbers = [10, 15, 20, 25, 30, 35]”,找到第一个能被 7 整除的数字并将其分配给“result”。如果不存在,则分配-1。

正在加载编辑器...
显示提示

35 是列表中第一个(也是唯一一个)能被 7 整除的数字。

3 次尝试后可用的解决方案

复习练习

锻炼#python.m2.l3.e2
尝试:0加载中...

使用范围(1, 21) 上的 for 循环构建包含 1 到 20(含)奇数的列表“odd_numbers”,并继续跳过偶数。

正在加载编辑器...
显示提示

如果n是偶数,则继续;否则追加。

3 次尝试后可用的解决方案

额外的挑战

锻炼#python.m2.l3.e3
尝试:0加载中...

Given the list `numbers = [7, 11, 14, 21, 25]`, write a `for` loop to find the first number that is divisible by 7 and also strictly greater than 10. When you find it, store it in `found` and exit the loop using `break`. Finally, evaluate `found`.

正在加载编辑器...
显示提示

Inside the loop, check if num % 7 == 0 and num > 10:, assign it to found and trigger break.

3 次尝试后可用的解决方案