## 第三章:控制流程工具
### 條件語句
* #### 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
```
:::