在Python中for和while可搭配else语句

作者: imule 分类: Python3 发布时间: 2022-08-26 10:27

循环语句可能带有 else 子句;它会在循环耗尽了可迭代对象 (使用 for) 或循环条件变为假值 (使用 while) 时被执行,但不会在循环被 break 语句终止时被执行。 以下搜索素数的循环就是这样的一个例子:

for n in range(2, 10):
    for x in range(2, n):
        if n % x == 0:
            print(n, 'equals', x, '*', n // x)
            break
    else:
        # loop fell through without finding a factor
        print(n, 'is a prime number')
else:  # 添加一个else来确认else与哪个for搭配
    print('finish')  # 若于缩进层次的最近for搭配,则只会打印一次finish

执行结果:

2 is a prime number  # 输出1
3 is a prime number  # 输出2
4 equals 2 * 2       # 输出3
5 is a prime number  # 输出4
6 equals 2 * 3       # 输出5
7 is a prime number  # 输出6
8 equals 2 * 4       # 输出7
9 equals 3 * 3       # 输出8
finish               # 输出9

以上例子来源于官方文档(做了个小修改)

个人理解:

输出1:因为 range(2,2) 是空的,所以内循环直接耗尽可迭代对象,没有触发 if 语句中的 break,所以跳到了 else 语句

输出3:此时 n = 4,当 x = 2 时触发 if 语句,执行 break 语句,不执行 else 语句。

else 语句 在缩进上与所搭配的 for 语句同级

原文章来源于:https://blog.csdn.net/FlyChestnut/article/details/107362558

寄语

    有人在奔跑,有人在睡觉,有人在感恩,有人在抱怨,有目标的睡不着,没目标的睡不醒,努力才是人生应有的态度,睁开眼就是新的开始。

本站文章主要用于个人学习记录,可能对您有所帮助,仅供参考!

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!