---
# System prepended metadata

title: 第三章：控制流程工具

---

## 第三章：控制流程工具

### 條件語句
* #### if 判斷
    if 語句用於根據條件執行不同的代碼塊。基本語法如下：
    ```python=
    # condition 和 another_condition 視為 bool
    
    if condition:
        # 當 condition 為真時執行這段代碼
    elif another_condition:
        # 當 another_condition 為真時執行這段代碼
    else:
        # 當所有條件都不滿足時執行這段代碼
    ```
    
    ```python=
    a = 10
    b = 5
    if b > a:
        print("b 大於 a")
    elif a > b:
        print("a 大於 b")
    else:
        print("a 等於 b")
    ```
    **三元運算子**：
    在 python 使用三元運算子(ternary conditional operator) 好處是程式碼可以看起來比較簡短，
在某些情況 python 使用三元運算子簡化後 code 會變得清爽簡短許多
    ```python=
    condition_is_true if condition else condition_is_false
    ```
    簡易判斷及格
    ```python=
    score = 75
    status = "及格" if score >= 60 else "不及格"
    print(status)
    ```
:::spoiler 作業解答：判斷是否及格
```python=
Chinese = int(input('輸入國文成績'))
English = int(input('輸入英文成績'))

if Chinese >= 60 and English >= 60 :
    print("及格")
elif Chinese >= 60 :
    print("只有中文及格")
elif English >= 60 :
    print("只有英文及格")
else:
    print("不及格")
```
:::

:::spoiler 作業 2 解答：輸入出生年份，判斷是否大於18歲
```python=
bornYear = input("輸入出生年份（西元）：")
age = 2025 - int(bornYear)
if age > 18:
    print("大於 18 歲")
elif age == 18:
    print("剛好 18 歲")
else:
    print("小於 18 歲")
```
:::
---
### 循環
* #### for 循環
    for 循環用於遍歷一個序列（如列表、元組或字串）。基本語法如下：
    ```python=
    for item in sequence:
    # 對於 sequence 中的每個 item 執行這段代碼
    ```
    用數字範圍
    ```python=
    for i in range(10):
        print(i) #依序輸出 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
    ```
:::spoiler 作業：輸出 5 x 1 ~ 5 x 9
- 作法一
```python= 
for i in range(1, 10):
    # 輸出二擇一
    print(f'5 x {i} = {5*i}')
    print('5 x', i, '=', 5*i)
```
- 作法二
```python= 
for i in range(10):
    if i != 0: # 或使用後面教的 continue
        # 輸出二擇一  
        print(f'5 x {i} = {5*i}') 
        print('5 x', i, '=', 5*i)
```
:::

* #### while 循環
    while 循環在條件為真時重複執行一段代碼。基本語法如下：
    ```python=
    while condition:
    # 當 condition 為真時執行這段代碼
    ```
    
    ```python=
    a = 10
    b = 5
    while a > b:  # a > b 不成立時跳出，會在 a == b 時跳出
        b = b + 1 
    print(b) # b = 10
    ```
* **控制迴圈（while/for）的行為**
    **continue** : 跳過本次迴圈，進入下一輪判斷
     ```python=
    # 使用 continue 忽略偶數，只印出奇數
    i = 0
    while i < 10:
        i += 1
        if i % 2 == 0:
            continue  # 跳過偶數，直接進入下一輪
        print(i)  # 輸出: 1, 3, 5, 7, 9
    ```
    **break** : 立刻終止整個迴圈
     ```python=
    # 使用 break 在找到第一個可被 7 整除的數時停止
    n = 0
    while n < 20:
        n += 1
        if n % 7 == 0:
            print(f"找到第一個可被 7 整除的數：{n}")
            break  # 立即跳出迴圈
    ```
    **pass** : 控制迴圈或條件中的空操作
    ```python=
    # 使用 pass 暫時略過負數處理，等待未來補上邏輯
    nums = [3, -1, 5, -6, 9]
    for num in nums:
        if num < 0:
            pass  # 負數處理邏輯尚未實作，先跳過
        else:
            print(f"處理正數：{num}")

    ```
:::spoiler 作業：輸入成績，直到成績大於 60 時，輸出“及格了”並跳出迴圈
```python=
while True:
    score = int(input("輸入成績："))
    if score >= 60:
        print("及格了")
        break
```

:::

:::spoiler 作業2：輸入成績，直到成績大於 60 的次數大於三次，輸出“及格三次”並跳出迴圈
```python=
passTime = 0
while True:
    score = int(input("輸入成績："))
    if score >= 60:
        passTime +=1
    if passTime == 3:
        print("及格三次")
        break
```

:::

