循环体与else语句

本文介绍了Python中for和while循环语句与else子句的结合使用。else语句不仅适用于if条件判断,还能配合循环结构,提供一种在循环正常结束时执行特定代码的机制。通过实例解析了如何利用else简化代码,提高代码的Pythonic风格,并讨论了break和continue语句对else语句执行的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

大家一定非常熟悉else关键字语句,else通常是用来配合if语句使用的,但是在Python的else语句并不只能用在if语句之后,还可以用在循环语句甚至try异常处理语句中,这虽然不是什么秘密,但是很多人没有发现它的好处。

for & else

默认情况下,只有当for循环语句正常执行后,最后才会执行else语句。

for i in list("abcdefg"):
    print(i)
else:
    print("I am 'else' expression.")
    
# 输出如下:
# a
# b
# c
# d
# e
# f
# g
# I am 'else' expression.

但是如果像下面这样,循环语句里出现了break语句或者return之类跳出去的语句的话,同时又符合被跳出去的条件,那么else就不会被执行了,因为被提前跳出去了。但是被continue语句跳过是没有任何问题的,因为最终还是会执行下去语句不会跳出执行体。

for i in list("abcdefg"):
    print(i)
    if i == "c":
        break
else:
    print("I am 'else' expression.")
    
# 输出如下:
# a
# b
# c

那什么时候用else合适呢,试想一种场景,我们要遍历一个元素列表,判断列表中是否有奇数,如果存在就打印奇数存在,不存在就打印奇数不存在。对于这类判断是否存在某个值的时候,我们都会考虑设定一个flag开关来判断,因为不设立flag判断的话,像下面示例这样直接在循环体内做判断设置打印语句就会把每次判断一个元素的的结果都打印一遍,显得十分多余,也极不推荐和采纳。

numbers = [2, 4, 6, 8, 10]
for n in numbers:
    if n % 2 == 1:
        print('Odd exist')
        break
    else:
        print('Odd does not exist')
  
# 输出如下:
# Odd does not exist
# Odd does not exist
# Odd does not exist
# Odd does not exist
# Odd does not exist

通常像下面这样设立一个flag开关来判断是否存在某个元素更合理。

numbers = [2, 4, 6, 8, 10]
flag = False
for n in numbers:
    if n % 2 == 1:
        flag = True
        break
        
if flag:
    print('Odd exist')
else:
    print('Odd does not exist')
    
# 输出如下:
# Odd does not exist

但是考虑到代码优化和尽可能pythonic的话,往for循环里添加else语句就很合适了,这样是不是更简洁。

numbers = [2, 4, 6, 8, 10]
for n in numbers:
    if n % 2 == 1:
        print('Odd exist')
        break
else:
    print('Odd does not exist')
    
# 输出如下:
# Odd does not exist

所以,对于带有else子句的for循环,如果是因为循环条件不成立或序列中的元素已迭代结束而使得循环自然结束,则继续执行else子句中的代码;而如果是因为执行了break语句使得循环提前结束,则不再执行else子句中的代码。

while & else

下面这个例子中,在while循环的时候,我们判断while是否小于4,如果小于就执行循环,如果不小于它就不会做任何执行也不会给出任何提示。

number = 5
while number < 4:
    if number == 3:
        break
    print(number)
    number += 1

但是我们可以在while语句后面搭配else语句给出一个打印提示,使代码更容易理解。

number = 5
while number < 4:
    if number == 3:
        break
    print(number)
    number += 1
else:
    print('number is greater then 4')
    
# 输出如下:
# number is greater then 4  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值