甲居工作室

7.Python迴圈 (for loop / while loop)

日期:2024/04/07

7.Python迴圈 (for loop / while loop)

在Python中,for 迴圈是一種用於迭代序列(如列表、元組或字串)或其他可迭代對象(如字典)中的元素的迭代工具。它能夠按照指定的順序遍歷容器中的元素,並在每次迭代中執行特定的操作。

7.1 for loop

基本語法

  1. for item in iterable:
  2. # 執行迴圈內的程式碼
  • item:迭代過程中每次從可迭代對象中取出的元素。
  • iterable:被迭代的對象,如列表、元組、字串、字典等。
  1. for fruit in ['apple', 'banana', 'cherry']:
  2. print(fruit)

會依序如下顯示

  • apple
  • banana
  • cherry

range() 函式

range()函式是用於創建指定範圍內整數序列的內建函式。通常與 for 迴圈一起使用,用於迭代指定範圍內的整數。其基本語法為:

  1. range(start, stop, step)
  • start:序列的起始值(包含在序列中)。
  • stop:序列的終止值(不包含在序列中)。
  • step:序列中每個元素之間的間隔。

是不是跟切片很像呢?這是 python 設計的理念之一,將用法相同不要創造多餘相似的語法。

  1. for i in range(1, 5):
  2. print(i)

會依序如下顯示

  • 1
  • 2
  • 3
  • 4

enumerate() 函式

enumerate()函式用於將可迭代對象的每個元素與其對應的索引一起返回,通常與 for 迴圈一起使用。

  1. fruits = ["apple", "banana", "cherry"]
  2. for index, fruit in enumerate(fruits):
  3. print(f"編號: {index}, 水果: {fruit}")

會依序如下顯示

  • 編號: 0, 水果: apple
  • 編號: 1, 水果: banana
  • 編號: 2, 水果: cherry

巢狀迴圈 (nested loop)

是指在一個迴圈的內部再包含另一個迴圈的情況。
在 Python 中,巢狀迴圈的使用非常常見,特別是在處理多維數據結構時。下面是一個示例,展示了如何使用巢狀迴圈來遍歷二維列表:

  1. matrix = [[1, 2, 3],
  2. [4, 5, 6],
  3. [7, 8, 9]]
  4. # 使用巢狀迴圈遍歷二維列表
  5. for row in matrix:
  6. for element in row:
  7. print(element, end=' ')
  8. print() # 在每一行結束時換行

另外提及 print() 的 end 參數預設爲『\n』這裡更改爲一個空格。
執行結果會依序如下顯示

  • 1 2 3
  • 4 5 6
  • 7 8 9

7.2 while loop

基本語法

  1. while condition:
  2. # 執行迴圈內的程式碼
  • condition:一個需要被判斷的條件。只要條件為True,就會重複執行迴圈內的程式碼;如果條件為False,則退出迴圈。
  1. total = 0
  2. num = 1
  3. # 使用 while 迴圈計算總和
  4. while num <= 10:
  5. total += num
  6. num += 1
  7. print('1 到 10 的總和為:', total) # 1 到 10 的總和為: 55

7.3 break、continue 和 pass

breakcontinuepass是三個控制迴圈流程的關鍵字。它們可以用於更靈活地控制迴圈的執行。

break

強制跳出整個迴圈

  1. for i in range(5):
  2. if i == 3:
  3. break
  4. print(i)

會依序如下顯示

  • 0
  • 1
  • 2

pass

用於指示不執行任何操作,只是作為佔位符或空操作。當我們需要一個語句,但不需要任何執行代碼時。

  1. for i in range(5):
  2. # 這邊還在討論

噹噹!直接報錯 Could not run code because it is incomplete.
這時候只要改成如下就可以正成執行。

  1. for i in range(5):
  2. pass
  3. # 這邊還在討論

當然還有事宜他情形需要告訴解釋器跳過這邊。

  1. if condition:
  2. pass
  3. def function(args):
  4. pass
  5. class Example:
  6. pass

7.4 生成式

生成式(Comprehension)是 Python 中一種方便而強大的語法結構,用於快速生成新的串列、字典、集合、元組。它可以在一行程式碼中完成循環迭代、條件過濾等操作,使程式碼更為簡潔、易讀。

  1. squares = []
  2. for i in range(10):
  3. squares.append(i ** 2)
  4. print(squares) # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

如果將上方程式使用串列生成式則可簡化成

  1. squares = [i ** 2 for i in range(10)]
  2. print(squares) # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

當然也可以加上判斷式

  1. evens = []
  2. for i in range(10):
  3. if i % 2 == 0:
  4. evens.append(i)
  5. print(evens) # [0, 2, 4, 6, 8]

如果將上方程式使用串列生成式則可簡化成

  1. evens = [i for i in range(10) if i % 2 == 0]
  2. print(evens) # [0, 2, 4, 6, 8]

7.5 回家作業

題目描述:

設計一個程式,要求使用者輸入一個正整數n(n > 0),然後使用迴圈依次計算出1 到 n 的所有正整數的總和、平均值、以及奇數和偶數的個數。

要求:

  1. 使用者輸入一個正整數n(n > 0)。
  2. 使用迴圈計算出 1 到 n 的所有正整數的總和和平均值。
  3. 使用迴圈計算出 1 到 n 的所有正整數中奇數和偶數的個數。
  4. 打印出計算結果。

題目描述:

設計一個程式,要求使用者輸入一個正整數n(0 < n <= 9),請依照下列形式打印出邊長為 n 的空心菱形。

  • n = 3
    1.   *
    2.  * *
    3. *   *
    4.  * *
    5.   
  • n = 5
    1.     *
    2.    * *
    3.   *   *
    4.  *     *
    5. *       *
    6.  *     *
    7.   *   *
    8.    * *
    9.     

要求:

  1. 使用者輸入一個正整數n(0 < n <= 9)。
  2. 需要使用迴圈

延伸閱讀

8. Python 函式 (Function)

寫程式碼時有一個非常重要的觀念是 DRY (Don’t repeat yourself),避免重複撰寫程式碼,除了可讀性低,也不容易維護。

Read more

9.Python 模組 (Module)

經過前幾章的教學想必你對基礎語法有觀念了吧? 第一章節曾提及『豐富且完整的套件,不必製造輪子及可以快速組裝你所需要的功能。』所說的就是模組 (Module)

Read more