理解Python循环和流程控制,面向新手

Python是当今最广泛使用的语言之一。像几乎所有其他编程语言一样,Python也有循环结构。Python循环,如for循环和while循环,允许开发人员根据不同条件迭代集合。

在本教程中,您将学习如何创建和使用每种类型的Python循环,以及如何使用breakpasscontinue Python语句控制循环。

让我们开始吧!

先决条件

本文将是一个逐步教程。如果您想跟着做,请确保已安装Python v3.6或更高版本。本教程将使用Python v3.9.2在Windows 10机器上。

理解可迭代的Python构造

在您开始学习循环之前,您必须了解Python可迭代对象的概念。循环处理诸如列表元组字典等元素的集合。每个构造都包含多个元素,您可以“迭代”处理。因此,每个构造都是一个可迭代对象,其中包含循环可以逐个处理的元素。

当你听到有人谈论某物可迭代时,请知道这是一个你可以用循环读取其中每个对象的元素。

Python的for循环

让我们通过首先学习for循环来开始本教程。for循环重复执行由可迭代表达式控制的语句或语句块。换句话说,它们对集合中的每个项目执行代码。

for循环和字符串

例如,也许你有一个可迭代项,比如一个字符串。在Python中,字符串是字符的序列。每个字符串由字符组合而成。也许你有一个字符串ADAM。这个字符串由四个可迭代字符ADAM组成。

作为一个字符串,Python只看到一个元素;ADAM,如下所示。

One element in Python

但是,由于Python字符串是可迭代的,Python可以将该字符串“拆分”为一个字符数组,然后逐个处理每个字符。为此,你可以创建如下的for循环。

for循环有一个目标或迭代器(在这种情况下是letter)来表示每次迭代。然后,你会告诉Python你想要处理哪个可迭代元素(ATA)使用in关键字。字符数组中的每个字符都字符串中。

然后,在for循环内部,你可以创建任何你想要在每次迭代中运行的代码。在这个例子中,Python只是简单地打印字符数组(字符串)中的每个字符。

ATA = "ADAM"
for letter in ATA:
    print(letter)

您可以看到以下Python逐个打印字符串中的每个字符。

Printing each character in a string with a for loop

对于循环可以迭代任何可迭代元素,例如列表和范围。在本节示例中用range(5)替换ATA,您将看到相同的结果。

Python While循环

虽然for循环会为元素集合中的每个项目执行代码,但while循环则根据特定条件执行代码。更具体地说,Python会在条件为假时继续执行while循环。

例如,Python中的常见需求是创建一个计数器并执行指定次数的代码。为了创建这种情况,您需要定义一个条件,当当前计数超过最大计数时会返回True

假设您从一个名为count的变量开始,存储一个整数0。您想将这个整数增加1,但不要超过5。您可以创建类似这样的东西:

count = 0
count = count + 1
count = count + 1
count = count + 1
count = count + 1
count = count + 1
print(count)

上面的方法可能有效,但效率非常低。您没有使用DRY原则。您在重复自己。相反,通过使用while循环并告诉Python在count小于六时将一个加到count中来减少代码长度。

下面的示例使用while循环定义条件(count < 6)并执行表达式(print语句并将count递增1),条件为True时。

count = 0
while (count < 6):
   print('The count is:', count)
   count = count + 1
Demonstrating a Python while loop

循环中的流程控制

在前面的两个示例中,Python 的 for 循环和 while 循环都是自己开始和结束的。for 循环终止是因为它达到了可迭代集合的末尾,而 while 循环结束是因为它的条件求值为 True

虽然 Python 循环通常会“正常”结束,但您也可以更改循环的行为,使其提前终止或跳过一个或多个迭代。

中断语句

当您需要提前结束循环时,可以使用 break 语句。当在循环内执行时,break 语句会停止当前迭代的循环。

通常,在循环内满足特定条件时,您会使用 break 语句。例如,在前面的 for 循环示例中,您了解到 for 循环会迭代字符串中的字符数组。也许您只想处理直到第一个 D 之前的所有字符。

要停止 for 循环(甚至是 while 循环),请定义一个您想要匹配的特定条件,然后包含一个 break 语句,如下所示。

在下面的示例中,Python 在迭代变量 letter 等于 D 时终止 for 循环。

ATA = "ADAM"
for letter in ATA:
	print(letter)
	if letter == "D":
		break
Demonstrating the break statement in a Python loop

继续语句

也许您需要基于特定条件创建循环,但不一定要处理每个可迭代元素。在这种情况下,您可以使用 continue 语句跳过迭代。

与`break`语句终止整个循环不同,`continue`语句跳过当前迭代。使用上面的示例,也许您想迭代字符串`ADAM`中的每个字符,但跳过`D`字符。您可以使用条件(`if letter == “D”`)和`continue`语句跳过`D`字符,如下所示。

ATA = "ADAM"
for letter in ATA:
	if letter == "D":
		continue
	print(letter)

您可以看到下面的Python没有返回`D`字符,因为`continue`语句在遇到`D`字符时跳过了`print`语句。

Using the Python continue statement

占位语句

现在让我们通过`pass`语句完成流程控制部分。`pass`语句有点独特,因为它实际上只是一个占位符。`pass`语句是在Python脚本中定义一个实际上什么也不做的循环的一种方式。

假设您有一个for循环,出于某种原因您希望保留在Python脚本中。但是,您实际上没有要在其中执行的表达式,就像下面这样。

for value in "adam":

当您在Python中定义一个带有内部表达式的for循环时,Python将返回一个IdentationError,如下所示。

Error about no loop expression

但是,将`pass`语句作为`for`循环内部的表达式添加进去,您将看到Python执行for循环,实际上什么也不做。

Using the pass statement

结论

在这个教程中,你学会了如何开始使用 Python 循环。学习 Python 循环的工作原理以及如何控制它们,将为你创造和构建稳健的 Python 程序提供更多机会。

有了你新获得的知识,你将在代码中的哪里插入循环?

Source:
https://adamtheautomator.com/python-loop/