python 中的 for-else 和 while-else 语句

python 中的 for-else 和 while-else 语句

绝大部分编程语言中都有条件判断语句,比如 if-else。这里的 else 一般与 if 成对使用。不过在 Python 中,else 除了能与 if 配合外,还能和 for、while 配对使用。

我们来看一个例子:
假设有一个列表用来保存学生信息,列表的元素是字典,字典中的键有姓名、年龄等。让用户输入一个名字,然后在列表中查询,如果有这个名字就告诉用户“找到了”,反之告诉用户“没有找到”。

一般情况下,我们可能会这样写:

info = [{"name":"Leslie", "age":30},
        {"name":"Karl", "age":20},
        {"name":"Tom", "age":25}]

to_find_name = input("please input a name:")

found_flag = False

for person in info:
    if person["name"] == to_find_name:
        found_flag = True
        
if found_flag:
    print("Found it")
else:
    print("Not found")

程序运行结果如下:

please input a name:Tom
Found it

please input a name:Wang
Not found

细心的你肯定发现了:代码在第7行定义了一个标志变量,其默认值是False;在对列表的遍历中,如果找到了,就把这个变量赋值为True;最后根据这个变量的值,打印出查询结果。

如果使用了 for-else 语句,代码可以这样写:

info = [{"name":"Leslie", "age":30},
        {"name":"Karl", "age":20},
        {"name":"Tom", "age":25}]

to_find_name = input("please input a name:")

for person in info:
    if person["name"] == to_find_name:
        print("Found it")
        break;
else:
    print("Not found")

运行结果和前面是一样的。

这里的逻辑是:如果运行了 break,那么就不执行 else 语句;如果没有运行 break,那么就执行 else 语句。

这样写的优点是:节省笔墨,不用再设置一个标志变量。

有的朋友会问,如果 for 的循环体中没有 break 语句,else 语句还会执行吗?答案是:会!

while-else 的用法同理。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值