## Python 全攻略 Chapter 3: Control Flow ### 目標 學習程式控制流程,包含: - 條件判斷 (`if`) - 迴圈控制 (`for`, `while`) - 高階結構(巢狀迴圈、Comprehension 等) --- ## 1. Control Flow: 程式執行順序 ### 控制流程 控制流程是程式依據條件或循環執行指令的方式。常見流程包括: - **條件判斷**:`if` 語句 - **固定次數迴圈**:`for` 迴圈 - **條件控制迴圈**:`while` 迴圈 --- ## 2. if Statement: 條件判斷 ### 用途:根據條件進行執行分支。 結構 ```python if 條件: 執行代碼 elif 另一條件: 執行代碼 else: 執行代碼 ``` --- 範例 ```python age = 28 if age < 8: print("Your age is " + str(age) + ", movie is free for you!") elif 8 <= age < 65: print("Your age is " + str(age) + ", you need to pay $300.") else: print("Your age is " + str(age) + ", you need to pay $150.") ``` --- 例題: 假設一個程式需要根據分數給學生評語,80 分以上為「優秀」,60-79 分為「及格」,60 分以下為「需要加油」。請撰寫 if 條件式實現此邏輯。 --- 解答 ```python score = 75 if score >= 80: print("優秀") elif score >= 60: print("及格") else: print("需要加油") ``` --- ## 3. for Loop: 固定次數迴圈 ### 用途:用於遍歷 iterable object (如 list, tuple, set, string 等)。 結構: ```python= for 元素 in 可迭代物件: 執行代碼 ``` --- 範例1: 遍歷字串,顯示大寫字母: ```python= for letter in "Hello World": if letter == letter.upper(): print(letter) ``` 範例2: 列表平方: ```python= mylist = [1, 3, 5] for num in mylist: print(num ** 2) ``` --- 例題: 給定數字列表 [2, 4, 6, 8],請撰寫 for 迴圈來計算每個數字的立方。 --- 解答: ```python= numbers = [2, 4, 6, 8] for num in numbers: print(num ** 3) ``` --- 4. while Loop: 條件控制迴圈 用途:根據條件進行循環,直到條件不成立。 結構: ```python= while 條件: 執行代碼 ``` --- 範例 ```python x = 0 while x < 5: print(x) x += 1 ``` --- 例題:撰寫一個 while 迴圈來計算從 1 到 100 的總和。 --- 解答: ```python total = 0 i = 1 while i <= 100: total += i i += 1 print(total) ``` --- ## 5. 巢狀迴圈 (Nested Loop) 定義:迴圈中包含另一個迴圈。 結構: ```python= for 外層元素 in 外層集合: for 內層元素 in 內層集合: 執行代碼 ``` --- 範例 ```python for i in "123": for j in "abc": print(i, j) ``` --- 例題:使用巢狀迴圈產生乘法表(1 到 5 )。 --- 解答: ```python for i in range(1, 6): for j in range(1, 6): print(f"{i} * {j} = {i * j}") ``` --- ## 6. 控制語句: Pass, Break, Continue **Pass**:跳過不執行代碼。 ```python for i in range(5): pass # 什麼都不做 ``` **Break**:跳出當前迴圈。 ```python for i in range(5): if i == 3: break print(i) ``` **Continue**:跳過當前迴圈,進入下一次迭代。 ```python for i in range(5): if i == 3: continue print(i) ``` --- 例題:撰寫一個 for 迴圈,印出 1 到 10 中除了 5 以外的所有數字。 解答: ```python for i in range(1, 11): if i == 5: continue print(i) ``` --- ## 7. Range 與迴圈 定義:產生一個範圍的數字,用於迴圈遍歷。 結構: ```python range(start, stop, step) ``` --- 例題:撰寫程式印出從 10 到 1 的倒數。 --- 解答: ```python for i in range(10, 0, -1): print(i) ``` --- ## 8. Comprehension ## (快速生成變數) 1. List Comprehension: ```python mylist = [x ** 2 for x in range(5)] print(mylist) # [0, 1, 4, 9, 16] ``` 2. Dictionary Comprehension: ```python mydict = {x: x ** 2 for x in range(5)} print(mydict) ``` --- 例題:使用 list comprehension 建立一個包含 1 到 10 中所有偶數的列表。 --- 解答: ```python evens = [x for x in range(1, 11) if x % 2 == 0] print(evens) ``` --- 上週題目解答 ```python # 輸入一個數字 x = int(input("請輸入一個數字:"))#提示使用者輸入一個數字。 # 檢查負數,如果是負數則直接判斷為非回文 if x < 0: #檢查輸入是否為負數,若是,直接輸出 False,因為負數不可能是回文。 print(False) else: # 將數字轉為字串,反轉後與原字串比較 str_x = str(x) #將數字轉為字串。 is_palindrome = str_x == str_x[::-1] #將字串反轉後與原字串比較。 print(is_palindrome) #將結果輸出,True 表示回文數,False 表示非回文數。 ``` --- ## 綜合練習題:學生成績統計系統 設計一個簡單的學生成績統計系統。此程式需要讓使用者輸入多位學生的名字和分數,並且針對每位學生的成績給出評語。程式會進行以下步驟: 1. 輸入資料:使用者依序輸入每位學生的名字和分數。 * 使用 while 迴圈持續輸入,直到使用者輸入 "done" 表示輸入結束。 --- 2. 評語分類:根據分數範圍對每位學生評分並給出評語。 * 成績 90 分以上為 "優秀" * 75 - 89 分為 "良好" * 60 - 74 分為 "及格" * 60 分以下為 "需要加油" --- 3. 字母計數:統計所有學生名字中的字母出現次數,並以字典顯示每個字母的出現次數。 4. 成績分析:將每位學生的成績分成三組:低於 60 分、60 到 79 分、80 分以上,並統計每組的平均分數。結果以字典顯示。 5. 結果顯示: * 顯示每位學生的名字、分數、評語。 * 顯示所有學生名字中的字母出現次數。 * 顯示每組成績的平均分數。 ---
{"description":"學習程式控制流程,包含:","title":"Python 全攻略 Chapter 3: Control Flow","contributors":"[{\"id\":\"e3444383-f025-48fc-8209-cf895dce5811\",\"add\":4006,\"del\":231}]"}
    129 views