## 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}]"}