Python入门教程第55篇 循环进阶之for…else语句

Posted 不剪发的Tony老师

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python入门教程第55篇 循环进阶之for…else语句相关的知识,希望对你有一定的参考价值。

本篇我们将会介绍 for…else 循环语句,基本的 for 循环可以参考第 17 篇

for else 语句简介

在 Python 中,for 语句支持可选的 else 分支,这一点和其他编程语言(例如 Java、C#)不同。以下是该语句的语法:

for item in iterables:
    # process item 
else:
    # statement

在以上语法中,只有当循环正常执行完成时才会执行 else 分支。也就是说,如果循环中执行了 break 语句,不会执行 else 分支。

另外,如果 iterables 对象中没有任何元素,也会执行 else 分支。

以下流程图演示了 for…else 语句的执行过程:

下面我们来看一个示例。

for else 语句示例

以下是一个人员列表,每个人员都有一个字典,包含了他的姓名和年龄:

people = ['name': 'John', 'age': 25,
        'name': 'Jane', 'age': 22,
        'name': 'Peter', 'age': 30,
        'name': 'Jenifer', 'age': 28]

现在需要通过姓名搜索人员。如果在列表中找到了相应的人员,显示他的信息。否则,输出一个未找到相关人员的信息。

为此,我们可以编写以下程序:

people = ['name': 'John', 'age': 25,
        'name': 'Jane', 'age': 22,
        'name': 'Peter', 'age': 30,
        'name': 'Jenifer', 'age': 28]

name = input('Enter a name:')

found = False
for person in people:
    if person['name'] == name:
        found = True
        print(person)
        break

if not found:
    print(f'name not found!')

以上代码的执行过程如下:

  • 首先,通过 input() 函数获取用户输入。
  • 然后,将 found 标识设置为 False。如果输入的姓名在 people 列表中,将标识修改为 True,并且显示人员信息,使用 break 语句退出循环。
  • 最后,检测 found 标识并显示信息。

下面是一些运行结果:

Enter a name:Peter
'name': 'Peter', 'age': 30
Enter a name:Maria
Maria not found!

以上程序可以正常运行。

不过,如果我们使用 for…else 语句,可以进一步简化代码。例如:

people = ['name': 'John', 'age': 25,
        'name': 'Jane', 'age': 22,
        'name': 'Peter', 'age': 30,
        'name': 'Jenifer', 'age': 28]

name = input('Enter a name:')

for person in people:
    if person['name'] == name:
        print(person)
        break
else:
    print(f'name not found!')

使用 for…else 语句之后,不再需要使用 found 标识,也不需要在循环之后使用 if 语句进行判断。

在修改后的程序中,如果输入的姓名存在 people 列表中,将会显示人员信息并通过 break 语句退出循环。此时不会执行 else 分支。

总结

  • for…else 循环语句可以在循环正常完成后执行一段额外的代码。

以上是关于Python入门教程第55篇 循环进阶之for…else语句的主要内容,如果未能解决你的问题,请参考以下文章

Python入门教程第56篇 循环进阶之while…else语句

Python入门教程第62篇 函数进阶之类型提示

Python入门教程第61篇 函数进阶之偏函数

Python入门教程第58篇 函数进阶之元组解包

Python入门教程第60篇 函数进阶之可变关键字参数

Python从入门到进阶10流程控制语句-循环语句(for-while)