Skip to content

循环与异常中的 else 子句

https://docs.python.org/zh-cn/3/tutorial/controlflow.html#break-and-continue-statements-and-else-clauses-on-loops

1. 循环中的 else 子句

  • 循环语句支持 else 子句,在循环结束的时候执行它
  • for 循环中,可迭代对象中的元素全部循环完毕时,执行该子句
  • while 循环的条件为假时,执行该子句
  • break 语句终止循环时,不执行该子句

1.1 代码示例

比如下面代码是从10个范围0~10的随机数组成的列表中,查找是否有指定的数字(比如 5)

python
import random

lst = [random.randint(0, 10) for i in range(10)]
print(lst)

search_num = 5

for num in lst:
    if num == search_num:
        print(f'✅随机数列表中找到了 {search_num}')
        break
else:
    print(f'❌随机数列表中没有找到 {search_num}')

仔细看:else 子句属于 for 循环,不属于 if 语句

运行结果示例:

[1, 2, 3, 10, 9, 10, 1, 6, 5, 7]
✅随机数列表中找到了 5

[10, 1, 6, 9, 10, 9, 4, 0, 7, 1]
❌随机数列表中没有找到 5

2. 异常中的 else 子句

  • try ... except 语句具有可选的 else 子句,该子句如果存在,它必须放在所有 except 子句之后
  • tryelse 子句在未触发异常时执行

2.1 代码示例

下面代码为官网示例,除法函数的一个实现:当除数为0时抛出异常,不为0时输出结果

python
def divide(x, y):
    try:
        result = x / y
    except ZeroDivisionError:
        print("除数不能为0!")
    else:
        print("结果是", result)

divide(2, 5)
divide(2, 0)

运行结果:

结果是 0.4
除数不能为0!

总结

  • 循环的 else 子句则在未运行 break 时执行
  • try 的 else 子句在未触发异常时执行