🔄 Python 迴圈語法實務解說
以下針對 Python 程式語言中的迴圈語法 (for 迴圈與 while 迴圈),提供詳細的步驟解說、案例分析和提示詞範例。
1. 📋 for 迴圈:疊代式迴圈 (Iterative Loop)
for 迴圈用於遍歷任何可迭代物件(Iterable)中的元素,例如:列表 (List)、元組 (Tuple)、字串 (String)、字典 (Dictionary) 或 範圍 (Range)。
📌 步驟詳解
定義結構: 使用關鍵字
for,後接一個迴圈變數(Loop Variable)。指定來源: 使用關鍵字
in,後接你想要遍歷的可迭代物件。執行區塊: 迴圈每執行一次,迴圈變數會自動被賦予可迭代物件中的下一個元素值,然後執行縮排(通常是 4 個空格)內的程式碼區塊。
自動終止: 當所有元素都被遍歷完畢後,迴圈會自動終止。
搭配
range(): 常用range(start, stop, step)函式來產生一個數字序列,方便進行計數或固定次數的重複操作。
💡 案例分析 (3 個)
案例 1:遍歷字典的鍵值對 (.items())
目的: 遍歷一個儲存國家與首都的字典,同時取得鍵(國家)和值(首都)。
細節講解:
使用
.items()方法將字典轉換為一個包含 (鍵, 值) 元組的可迭代視圖。在
for語句中,同時定義兩個變數country和capital來接收解包後的 (鍵, 值)。透過 f-string 格式化輸出,展示鍵與值的對應關係。
程式碼:
Pythoncapitals = {"Japan": "Tokyo", "France": "Paris", "Germany": "Berlin"} for country, capital in capitals.items(): print(f"The capital of {country} is {capital}.")輸出細節: 依序輸出 "The capital of Japan is Tokyo."、"The capital of France is Paris."、"The capital of Germany is Berlin."。
案例 2:使用 range() 配合步長進行倒數
目的: 從 10 開始,以 2 為步長倒數到 0(包含 0)。
細節講解:
range(10, -1, -2)的參數分別是:起始值10、終止值-1(不包含,所以會數到 0)、步長-2(表示遞減)。這展示了
range()不僅可以遞增,也可以透過負數步長實現遞減操作。
程式碼:
Pythonfor countdown in range(10, -1, -2): if countdown == 0: print("LIFT OFF!") else: print(countdown)輸出細節: 依序輸出
10、8、6、4、2,最後輸出LIFT OFF!。
案例 3:遍歷列表並使用 enumerate() 追蹤索引
目的: 遍歷一個待辦事項列表,並印出每個事項的編號(索引)和內容。
細節講解:
使用內建函式
enumerate(todo_list),它會產生 (索引, 元素) 的元組。在
for語句中,使用index和item來接收索引和元素。因為索引從 0 開始,所以輸出時使用
index + 1來呈現使用者友善的編號。
程式碼:
Pythontodo_list = ["Buy groceries", "Finish report", "Call plumber"] for index, item in enumerate(todo_list): print(f"Task #{index + 1}: {item}")輸出細節: 依序輸出 "Task #1: Buy groceries"、"Task #2: Finish report"、"Task #3: Call plumber"。
💡 提示詞 (Prompt) 範例
Prompt 範例:
Python 語法:for 迴圈
請生成一個包含 3 個 獨立案例的
for迴圈程式碼。這 3 個案例需涵蓋以下情境:
遍歷一個包含五個元素的元組,並將每個元素的字串轉換為大寫後輸出。
使用
range()函式計算 到 之間所有奇數的總和。遍歷一個數字列表,並使用
break關鍵字,在列表的總和超過 50 時立即終止迴圈,並印出當時的總和。
2. 📝 while 迴圈:條件式迴圈 (Conditional Loop)
while 迴圈會在給定的布林條件為 True 時,重複執行程式碼區塊,直到條件評估為 False。它更適用於不知道迴圈需要執行多少次,只知道終止條件的情況。
📌 步驟詳解
初始化: 在迴圈開始前,必須先初始化一個或多個控制變數。
定義條件: 使用關鍵字
while,後接一個布林表達式作為執行條件。執行與更新: 只要條件為
True,就會執行縮排內的程式碼。至關重要的是,在迴圈體內必須有語句能使控制變數發生變化,最終導致條件變為False,以避免無限迴圈。終止: 條件一旦評估為
False,迴圈立即終止。
💡 案例分析 (3 個)
案例 1:從數字中提取位數
目的: 計算一個正整數 (
num) 有多少個位數。細節講解:
條件
num > 0確保迴圈持續執行,直到數字被分解完畢。num = num // 10使用整數除法將數字的最低位數移除(例如:)。count += 1每次移除一位數,計數器加一。
程式碼:
Pythonnum = 87654 count = 0 while num > 0: num = num // 10 count += 1 print(f"The number has {count} digits.")輸出細節: 輸出 "The number has 5 digits."。
案例 2:使用者密碼重試機制
目的: 模擬密碼輸入,最多允許 3 次嘗試。
細節講解:
使用
attempts < 3作為迴圈條件,控制最大嘗試次數。如果密碼不正確,
attempts會增加,直到達到 3 次終止迴圈。如果密碼正確,使用
break提前終止迴圈,並執行else區塊(但此處沒有else)。
程式碼:
Pythoncorrect_password = "OpenSesame" attempts = 0 while attempts < 3: user_input = input("Enter password: ") if user_input == correct_password: print("Login Successful!") break else: attempts += 1 print(f"Incorrect password. Attempts left: {3 - attempts}") if attempts == 3: print("Access denied.")輸出細節: 若使用者輸入錯誤兩次,第三次正確,會輸出 "Incorrect password...", "Incorrect password...", "Login Successful!"。
3. 使用 else 區塊(當迴圈自然結束時執行)
目的: 尋找列表中第一個大於 100 的數字。如果整個列表都沒有,則印出特定訊息。
細節講解:
while迴圈後的else區塊只在迴圈條件自然變為False(即i達到列表長度)時執行。如果迴圈是透過
break語句終止的(即找到了目標數字),那麼else區塊將會被跳過。
程式碼:
Pythondata = [10, 50, 90, 150, 200] i = 0 while i < len(data): if data[i] > 100: print(f"Found first number > 100 at index {i}: {data[i]}") break i += 1 else: print("No number greater than 100 found in the list.")輸出細節: 輸出 "Found first number > 100 at index 3: 150"。如果列表是
[10, 50, 90],則輸出 "No number greater than 100 found in the list."。
💡 提示詞 (Prompt) 範例
Prompt 範例:
Python 語法:while 迴圈
請生成一個包含 3 個 獨立案例的
while迴圈程式碼。這 3 個案例需涵蓋以下情境:
使用
while迴圈計算 到 (n=6) 的費波那契數列(Fibonacci Sequence)並印出前 6 項。使用
while迴圈從 開始,不斷除以 ,直到結果小於或等於 ,並記錄總共除了多少次。創建一個包含
while迴圈和其後else區塊的案例,用來檢查一個列表是否包含特定字串 ("STOP")。如果找到了,使用break終止;如果整個列表遍歷完畢都沒找到,則執行else區塊印出「未發現指令」。
留言
張貼留言