7.Python迴圈 (for loop / while loop)
日期:2024/04/07
7.Python迴圈 (for loop / while loop)
在Python中,for 迴圈是一種用於迭代序列(如列表、元組或字串)或其他可迭代對象(如字典)中的元素的迭代工具。它能夠按照指定的順序遍歷容器中的元素,並在每次迭代中執行特定的操作。
7.1 for loop
基本語法
for item in iterable:# 執行迴圈內的程式碼
- item:迭代過程中每次從可迭代對象中取出的元素。
- iterable:被迭代的對象,如列表、元組、字串、字典等。
for fruit in ['apple', 'banana', 'cherry']:print(fruit)
會依序如下顯示
- apple
- banana
- cherry
range() 函式
range()函式是用於創建指定範圍內整數序列的內建函式。通常與 for 迴圈一起使用,用於迭代指定範圍內的整數。其基本語法為:
range(start, stop, step)
- start:序列的起始值(包含在序列中)。
- stop:序列的終止值(不包含在序列中)。
- step:序列中每個元素之間的間隔。
是不是跟切片很像呢?這是 python 設計的理念之一,將用法相同不要創造多餘相似的語法。
for i in range(1, 5):print(i)
會依序如下顯示
- 1
- 2
- 3
- 4
enumerate() 函式
enumerate()函式用於將可迭代對象的每個元素與其對應的索引一起返回,通常與 for 迴圈一起使用。
fruits = ["apple", "banana", "cherry"]for index, fruit in enumerate(fruits):print(f"編號: {index}, 水果: {fruit}")
會依序如下顯示
- 編號: 0, 水果: apple
- 編號: 1, 水果: banana
- 編號: 2, 水果: cherry
巢狀迴圈 (nested loop)
是指在一個迴圈的內部再包含另一個迴圈的情況。
在 Python 中,巢狀迴圈的使用非常常見,特別是在處理多維數據結構時。下面是一個示例,展示了如何使用巢狀迴圈來遍歷二維列表:
matrix = [[1, 2, 3],[4, 5, 6],[7, 8, 9]]# 使用巢狀迴圈遍歷二維列表for row in matrix:for element in row:print(element, end=' ')print() # 在每一行結束時換行
另外提及 print() 的 end 參數預設爲『\n』這裡更改爲一個空格。
執行結果會依序如下顯示
- 1 2 3
- 4 5 6
- 7 8 9
7.2 while loop
基本語法
while condition:# 執行迴圈內的程式碼
- condition:一個需要被判斷的條件。只要條件為
True,就會重複執行迴圈內的程式碼;如果條件為False,則退出迴圈。
total = 0num = 1# 使用 while 迴圈計算總和while num <= 10:total += numnum += 1print('1 到 10 的總和為:', total) # 1 到 10 的總和為: 55
7.3 break、continue 和 pass
break、continue 和pass是三個控制迴圈流程的關鍵字。它們可以用於更靈活地控制迴圈的執行。
break
強制跳出整個迴圈
for i in range(5):if i == 3:breakprint(i)
會依序如下顯示
- 0
- 1
- 2
pass
用於指示不執行任何操作,只是作為佔位符或空操作。當我們需要一個語句,但不需要任何執行代碼時。
for i in range(5):# 這邊還在討論
噹噹!直接報錯 Could not run code because it is incomplete.
這時候只要改成如下就可以正成執行。
for i in range(5):pass# 這邊還在討論
當然還有事宜他情形需要告訴解釋器跳過這邊。
if condition:passdef function(args):passclass Example:pass
7.4 生成式
生成式(Comprehension)是 Python 中一種方便而強大的語法結構,用於快速生成新的串列、字典、集合、元組。它可以在一行程式碼中完成循環迭代、條件過濾等操作,使程式碼更為簡潔、易讀。
squares = []for i in range(10):squares.append(i ** 2)print(squares) # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
如果將上方程式使用串列生成式則可簡化成
squares = [i ** 2 for i in range(10)]print(squares) # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
當然也可以加上判斷式
evens = []for i in range(10):if i % 2 == 0:evens.append(i)print(evens) # [0, 2, 4, 6, 8]
如果將上方程式使用串列生成式則可簡化成
evens = [i for i in range(10) if i % 2 == 0]print(evens) # [0, 2, 4, 6, 8]
7.5 回家作業
題目描述:
設計一個程式,要求使用者輸入一個正整數n(n > 0),然後使用迴圈依次計算出1 到 n 的所有正整數的總和、平均值、以及奇數和偶數的個數。
要求:
- 使用者輸入一個正整數n(n > 0)。
- 使用迴圈計算出 1 到 n 的所有正整數的總和和平均值。
- 使用迴圈計算出 1 到 n 的所有正整數中奇數和偶數的個數。
- 打印出計算結果。
題目描述:
設計一個程式,要求使用者輸入一個正整數n(0 < n <= 9),請依照下列形式打印出邊長為 n 的空心菱形。
- n = 3
** ** ** **
- n = 5
** ** ** ** ** ** ** **
要求:
- 使用者輸入一個正整數n(0 < n <= 9)。
- 需要使用迴圈
