在Python,循环语句 for 和 while 竟然可以搭配 else 语句!!

循环语句可能带有 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
7 is a prime number
8 equals 2 * 4
9 equals 3 * 3
finish

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

个人理解:

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

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

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

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值