????????大家好,當涉及到編寫高效和靈活的程序時,條件分支和循環是 Python 中至關重要的概念。它們允許我們根據不同的條件執行不同的代碼塊,或者重復執行一組語句。條件分支和循環是測試開發工程師在日常工作中經常使用的工具,無論是編寫自動化測試腳本、處理測試數據還是構建測試框架,都離不開這些關鍵概念。
????????在本文中,我們將探索 Python 中條件分支和循環的基本知識和用法。我們將了解條件語句如何根據條件的真假來選擇性地執行代碼。我們還將深入研究不同類型的循環結構,包括?for
?循環和?while
?循環,以及它們的靈活性和適用場景。
一、條件分支
????????Python 的條件分支是一種編程結構,用于根據給定的條件選擇性地執行不同的代碼塊。條件分支語句允許程序根據條件的真假來決定執行哪些代碼。
????????Python 中的條件分支主要使用?if
、elif
?和?else
?語句來實現。條件分支允許根據給定的條件選擇性地執行不同的代碼塊。下面我將詳細介紹 Python 的條件分支語句。
1、if語句
if
?語句用于執行一個代碼塊,當給定條件為真時執行。它的基本語法如下:
if 條件:# 執行的代碼塊
如果條件為真,則執行代碼塊;否則,跳過該代碼塊。
以下是一個使用?if
?語句的示例:
x = 10
if x > 0:print("x 是正數")
在這個例子中,如果?x
?的值大于 0,則會執行?print("x 是正數")
?這行代碼。
2、if-else
?語句
if-else
?語句用于根據條件的真假執行不同的代碼塊。它的基本語法如下:
if 條件:# 條件為真時執行的代碼塊
else:# 條件為假時執行的代碼塊
如果條件為真,則執行第一個代碼塊;否則,執行?else
?后面的代碼塊。
以下是一個使用?if-else
?語句的示例:
x = 10
if x > 0:print("x 是正數")
else:print("x 是非正數")
????????在這個例子中,如果?x
?的值大于 0,則會執行?print("x 是正數")
?這行代碼;否則,執行?print("x 是非正數")
。
3、if-elif-else
?語句
if-elif-else
?語句用于在多個條件之間進行選擇。它的基本語法如下:
if 條件1:# 條件1為真時執行的代碼塊
elif 條件2:# 條件2為真時執行的代碼塊
elif 條件3:# 條件3為真時執行的代碼塊
...
else:# 所有條件均為假時執行的代碼塊
????????根據條件的真假,依次檢查每個條件,并執行第一個滿足條件的代碼塊。如果所有條件均為假,則執行?else
?后面的代碼塊。
以下是一個使用?if-elif-else
?語句的示例:
x = 10
if x > 0:print("x 是正數")
elif x < 0:print("x 是負數")
else:print("x 是零")
在這個例子中,根據?x
?的值,將會執行相應的代碼塊。
二、循環
????????Python 中的循環是一種重復執行特定代碼塊的控制結構。循環使得我們能夠有效地處理重復性任務,遍歷數據集合或根據條件執行特定操作。
Python 提供了兩種主要類型的循環:while
?循環和?for
?循環。
1、for循環
????????在 Python 中,for
?循環是一種用于遍歷序列(如列表、字符串、元組等)或其他可迭代對象的循環結構。它允許我們逐個訪問序列中的元素,并針對每個元素執行特定的代碼塊。下面我將詳細介紹 Python 中的?for
?循環。
for
?循環的基本語法如下:
for 變量 in 序列:# 執行的代碼塊
????????在每次迭代中,變量會被賦值為序列中的下一個元素,然后執行代碼塊,直到遍歷完所有元素為止。
以下是一個使用?for
?循環的示例,遍歷并打印列表中的元素:
fruits = ["apple", "banana", "orange"]
for fruit in fruits:print(fruit)
????????在這個例子中,for
?循環遍歷了列表?fruits
?中的每個元素。在每次迭代中,當前元素會被賦值給變量?fruit
,然后執行代碼塊,打印出水果的名稱。
除了列表,for
?循環還可以遍歷其他類型的序列,如字符串、元組等。例如:
string = "Hello"
for char in string:print(char)
在這個例子中,for
?循環遍歷了字符串 "Hello" 中的每個字符,并打印出字符。
此外,for
?循環還可以與內置函數?range()
?結合使用,用于生成一系列數字。例如:
for i in range(5):print(i)
????????在這個例子中,range(5)
?生成了一個從 0 到 4 的數字序列。for
?循環遍歷該序列中的每個數字,并打印出數字。
????????在?for
?循環中,我們還可以使用?break
?語句來提前結束循環,以及?continue
?語句來跳過當前迭代,繼續下一次迭代。這些控制流程語句可以幫助我們對循環進行更精確的控制。
2、break
與continue
?
break
?語句
? ? break
?語句用于立即終止當前所在的循環,不再執行循環中剩余的代碼,并跳出循環體,繼續執行循環后面的代碼。它常用于在滿足某個條件時提前結束循環。以下是?break
?語句的使用示例:
for i in range(5):if i == 3:breakprint(i)
????????在這個例子中,for
?循環遍歷了數字序列?range(5)
?中的每個數字。當?i
?的值等于 3 時,執行?break
?語句,終止循環。因此,只會打印出數字 0、1、2。
continue
?語句
????continue
?語句用于跳過當前迭代中剩余的代碼,直接進入下一次迭代。在遇到?continue
?語句時,循環會立即跳到下一次迭代,而不再執行本次迭代剩余的代碼。以下是?continue
?語句的使用示例:
for i in range(5):if i == 2:continueprint(i)
????????在這個例子中,for
?循環遍歷了數字序列?range(5)
?中的每個數字。當?i
?的值等于 2 時,執行?continue
?語句,跳過本次迭代中的剩余代碼。因此,不會打印出數字 2,而是繼續執行下一次迭代,打印出其他數字。
? ? break
?和?continue
?語句通常與條件判斷結合使用,以根據特定的條件來決定是否終止循環或跳過當前迭代。它們為我們提供了更靈活的控制循環流程的方式,使我們能夠根據需要對循環進行精確的控制。
????????需要注意的是,break
?和?continue
?語句在嵌套循環中的行為可能會受到影響。break
?語句會結束當前所在的最內層循環,并開始執行下一條語句。而?continue
?語句會跳過當前所在的最內層循環的剩余代碼,繼續下一次最內層循環的迭代。
????????總結來說,break
?語句用于提前結束循環,而?continue
?語句用于跳過當前迭代,繼續下一次迭代。這兩個語句為我們提供了更多的控制循環執行流程的能力,使我們能夠根據具體需求對循環進行精確的控制。
3、while循環
????????在 Python 中,while
?循環是一種根據條件判斷來重復執行代碼塊的循環結構。只要給定的條件為真(True
),循環就會一直執行,直到條件變為假(False
)。下面我將詳細介紹 Python 中的?while
?循環。
while
?循環的基本語法如下:
while 條件:# 執行的代碼塊
????????在每次迭代中,首先會對條件進行判斷。如果條件為真,則執行代碼塊;然后再次對條件進行判斷,以此類推,直到條件為假,循環結束。
以下是一個使用?while
?循環的示例,打印數字 0 到 4:
count = 0
while count < 5:print(count)count += 1
????????在這個例子中,count
?的初始值為 0。循環首先檢查條件?count < 5
,由于條件為真,執行代碼塊,打印出?count
?的值。然后?count
?的值遞增,再次進行條件檢查,直到?count
?的值達到 5 時,循環結束。
需要注意的是,如果條件一開始就為假,那么循環內的代碼塊將不會執行,循環直接跳過。
????????在?while
?循環中,我們可以使用?break
?語句來提前結束循環,以及?continue
?語句來跳過當前迭代,繼續下一次迭代,與?for
?循環中的用法相似。
以下是一個使用?while
?循環和?break
?語句的示例,尋找列表中的特定元素:
fruits = ["apple", "banana", "orange", "pear"]
index = 0
while index < len(fruits):if fruits[index] == "orange":print("找到了橙子!")breakindex += 1
else:print("未找到橙子!")
????????在這個例子中,循環遍歷列表?fruits
?中的元素,當找到值為 "orange" 的元素時,執行?break
?語句,提前結束循環。如果循環正常結束而沒有執行?break
,則執行?else
?語句塊,打印出 "未找到橙子!"。
????????當使用?while
?循環結合?continue
?語句時,可以通過跳過某些迭代來控制循環的執行流程。以下是一個使用?while
?循環和?continue
?語句的示例,計算列表中的奇數之和:
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]
sum_odd = 0
index = 0while index < len(numbers):if numbers[index] % 2 == 0:index += 1continuesum_odd += numbers[index]index += 1print("奇數之和:", sum_odd)
????????在這個例子中,while
?循環遍歷列表?numbers
?中的元素。如果當前元素是偶數,即?numbers[index] % 2 == 0
?條件為真,那么執行?continue
?語句,跳過當前迭代,繼續下一次迭代。這樣可以確保只有奇數被累加到?sum_odd
?變量中。在每次迭代中,如果當前元素是奇數,那么將其加到?sum_odd
?中。然后?index
?遞增,繼續下一次迭代。最終,打印出累加得到的奇數之和。
????????在這個例子中,continue
?語句幫助我們跳過偶數,只對奇數執行特定的操作。通過使用?continue
,我們可以更精確地控制循環的執行流程,以滿足特定的需求。
????while
?循環也需要謹慎使用,因為如果條件一直為真,循環可能會陷入無限循環的狀態,導致程序無法繼續執行。因此,我們需要確保條件在循環執行過程中最終會變為假,或者使用?break
?語句來提前結束循環。
????????總結來說,Python 的?while
?循環允許我們根據條件判斷重復執行代碼塊,直到條件為假。它是處理重復性任務和根據條件執行特定操作的重要工具之一。同時,我們可以使用?break
?和?continue
?語句來對循環進行更精確的控制。
4、循環嵌套
while與for嵌套
當需要在一個循環內嵌套另一個循環時,我們可以將?for
?循環和?while
?循環結合使用。
以下是一個同時包含?for
?循環和?while
?循環的例子,用于輸出九九乘法表:
for i in range(1, 10):j = 1while j <= i:print(f"{j} × {i} = {j * i}", end="\t")j += 1print()
????????在這個例子中,外層的?for
?循環用于控制被乘數?i
,取值范圍是 1 到 9。對于每個?i
?的值,我們使用內層的?while
?循環來生成乘法表的一行。內層的?while
?循環中,初始時將乘數?j
?設為 1。在每次循環中,我們打印出當前的乘法表項,并將?j
?遞增,直到?j
?的值大于等于?i
,然后換行。
????????通過將?for
?循環和?while
?循環結合使用,我們可以生成完整的九九乘法表。這個例子展示了如何在一個循環內嵌套另一個循環,并且同時使用了?for
?循環和?while
?循環,以實現特定的功能。這種循環嵌套的結構可以在需要處理多維數據或復雜的迭代邏輯時非常有用。
while與while嵌套
以下是一個使用?while
?循環嵌套?while
?循環的例子,用于打印一個矩形圖案:
rows = 5
columns = 8
i = 0while i < rows:j = 0while j < columns:print("*", end=" ")j += 1print()i += 1
????????在這個例子中,外層的?while
?循環用于控制打印的行數,變量?i
?從 0 開始,每次遞增 1,直到達到指定的行數?rows
。在內層的?while
?循環中,我們打印星號?*
?字符,控制打印的列數。變量?j
?從 0 開始,每次遞增 1,直到達到指定的列數?columns
。
運行此代碼將輸出如下的矩形圖案:
for與for嵌套
以下是一個使用?for
?循環嵌套?for
?循環的例子,用于輸出九九乘法表:
for i in range(1, 10):for j in range(1, 10):print(f"{j} × {i} = {j * i}", end="\t")print()
????????在這個例子中,外層的?for
?循環用于控制被乘數?i
,取值范圍是 1 到 9。對于每個?i
?的值,內層的?for
?循環用于控制乘數?j
,也取值范圍是 1 到 9。在內層的?for
?循環中,我們打印出當前的乘法表項,并使用制表符?\t
?分隔每個項。
運行此代碼將輸出如下的九九乘法表:
5、使用循環的注意事項
在使用 Python 循環時,有幾個方面需要注意:
-
循環條件:確保循環條件正確,并且能夠在循環執行過程中最終變為假。否則,循環可能會陷入無限循環的狀態,導致程序無法繼續執行。
-
循環變量的更新:在循環體內,確保更新循環變量的值,以便在每次迭代中逐步改變條件,使循環能夠最終結束。
-
循環控制語句的正確使用:了解并正確使用循環控制語句,如?
break
?和?continue
。break
?用于提前結束循環,而?continue
?用于跳過當前迭代,繼續下一次迭代。 -
避免無限循環:確保循環的終止條件被滿足,避免無限循環。如果循環意外陷入無限循環,可以使用?
Ctrl+C
?組合鍵終止程序的執行。 -
循環效率:在迭代大量數據或執行復雜操作的情況下,要考慮循環的效率。避免在循環內部執行過多的重復計算或頻繁的 I/O 操作,可以通過優化算法或緩存結果來提高循環效率。
-
循環嵌套:當在一個循環內嵌套另一個循環時,要確保內層循環的執行條件和控制正確,避免出現邏輯錯誤或死循環。
-
循環的可讀性和可維護性:編寫清晰、易讀的循環代碼,使用有意義的變量名和注釋來解釋循環的目的和邏輯。避免過長的循環體和復雜的嵌套結構,可以考慮將復雜的邏輯拆分成更小的函數或模塊。
-
選擇合適的循環類型:Python 提供了多種循環類型,如?
for
?循環、while
?循環和列表推導式等。根據具體的需求和情況選擇合適的循環類型,以及使用適當的迭代工具和技巧,可以簡化代碼并提高效率。