了解 Python 循環和流控制對新手

Python是今天最广泛使用的语言之一。与几乎所有其他编程语言一样,Python具有循环结构。像for循环和while循环这样的Python循环允许开发人员迭代集合或基于各种条件。

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

让我们开始吧!

先决条件

本帖将是一篇逐步教程。如果您想一起学习,请确保已安装Python v3.6或更高版本。本教程将使用Windows 10上的Python v3.9.2。

理解可迭代的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

对循环可以迭代任何可迭代元素,例如列表和范围。在这个部分的示例中,将ATA替换为range(5),你会看到相同的结果。

Python While循环

对于循环可以遍历元素集合,而while循环则根据特定条件执行代码。更具体地说,Python在条件为false时继续执行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在whilecount小于六的情况下将一添加到count

以下示例使用while循环定义条件(count < 6)并执行表达式(print语句和递增count ),while条件为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語句,如下所示。

在下面的示例中,當迭代器變量letter等於D時,Python終止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)

您可以看到,由於遇到D字符時,continue語句跳過了print語句,因此Python未返回D字符。

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/