這段程式碼展示了 Python 中「**流程控制(Control Flow)**」的概念。讓我們逐步了解:
### 程式碼解析:
```python
numbers = [5, -2, 4, 0, 7, -3, 8]
even_count = 0
for num in numbers:
if num < 0:
continue # 跳過負數
elif num == 0:
break # 遇到 0 時停止迴圈
elif num % 2 == 0:
even_count += 1 # 計算偶數
print(f"偶數的數量為:{even_count}")
```
1. **定義一個數字列表 `numbers`**:
- 包含正數、負數和零。
2. **初始化計數器 `even_count` 為 0**:
- 用於計算偶數的數量。
3. **使用 `for` 迴圈遍歷 `numbers` 列表**:
- **`if num < 0`**:
- 如果數字是負數,使用 `continue` 跳過此次迭代,繼續下一個數字。
- **`elif num == 0`**:
- 如果數字是 0,使用 `break` 結束迴圈。
- **`elif num % 2 == 0`**:
- 如果數字是偶數,將 `even_count` 加 1。
- **其他情況**:
- 如果數字是正的奇數,不做任何操作,繼續下一次迭代。
4. **輸出結果**:
- 使用 `print()` 函式輸出偶數的數量。
### 輸出結果:
```plaintext
偶數的數量為:1
```
### 流程控制解釋:
- **`for` 迴圈**:
- 用於遍歷 `numbers` 列表中的每個元素。
- **`if`、`elif` 和 `else`**:
- 控制程式在不同條件下的執行路徑。
- **`continue`**:
- 跳過當前迭代,立即開始下一次迭代。
- 在這個例子中,負數被跳過,不參與後續的判斷。
- **`break`**:
- 結束整個迴圈。
- 當遇到數字 0 時,迴圈停止,不再繼續遍歷剩餘的數字。
- **計算偶數**:
- 使用 `num % 2 == 0` 判斷數字是否為偶數。
- 如果是偶數,則將計數器 `even_count` 加 1。
- **`print()` 函式**:
- 用於輸出最終結果。
### 進一步的範例:
以下是更多有關流程控制的例子:
#### 1. 使用 `while` 迴圈計算階乘:
```python
n = 5
factorial = 1
i = 1
while i <= n:
factorial *= i
i += 1
print(f"{n} 的階乘是:{factorial}")
```
**輸出:**
```plaintext
5 的階乘是:120
```
**解釋:**
- **`while` 迴圈**:
- 當條件 `i <= n` 為真時,迴圈持續執行。
- **計算階乘**:
- 每次迭代將 `factorial` 乘以當前的 `i` 值。
#### 2. `for` 迴圈搭配 `else`:
```python
primes = [2, 3, 5, 7]
for num in primes:
print(num)
else:
print("已列出所有質數")
```
**輸出:**
```plaintext
2
3
5
7
已列出所有質數
```
**解釋:**
- **`else` 子句**:
- 當 `for` 迴圈正常結束(未被 `break` 中斷)時,執行 `else` 部分。
#### 3. 巢狀迴圈與 `break`:
```python
for i in range(1, 5):
for j in range(1, 5):
if i * j > 6:
break
print(f"{i} * {j} = {i * j}")
```
**輸出:**
```plaintext
1 * 1 = 1
1 * 2 = 2
1 * 3 = 3
1 * 4 = 4
2 * 1 = 2
2 * 2 = 4
2 * 3 = 6
3 * 1 = 3
3 * 2 = 6
4 * 1 = 4
4 * 2 = 8
```
**解釋:**
- **巢狀迴圈**:
- 內部的 `for` 迴圈在外部 `for` 迴圈的每次迭代中執行。
- **`break` 的作用範圍**:
- `break` 只會中斷所在的內部迴圈。
### 結論:
- **流程控制**是程式設計中不可或缺的一部分,透過 `if`、`for`、`while`、`break`、`continue` 等關鍵字,可以控制程式的執行順序和
邏輯。
- 理解這些概念有助於編寫高效且可讀性強的程式。