← 返回大綱
第三章

迴圈控制
與迭代

Loops & Iterations

Scratch → Python

重複 n 次 → for

Scratch
重複 5 次
說出 "Hello"
Python
for i in range(5):
    print("Hello")
Hello
Hello
Hello
Hello
Hello
range(n)

產生 0 到 n-1 的數列:range(5)0, 1, 2, 3, 4

for 迴圈

range() 的變化

range(5)        # 0, 1, 2, 3, 4
range(1, 6)     # 1, 2, 3, 4, 5
range(0, 10, 2) # 0, 2, 4, 6, 8  (每次跳 2)
range(10, 0, -1)# 10, 9, 8, ..., 1  (倒數)

實際應用:

# 印出 1 到 10 的總和
total = 0
for i in range(1, 11):
    total += i
print(f"1 到 10 的總和是 {total}")  # 55

# 九九乘法表(其中一段)
for i in range(1, 10):
    print(f"3 × {i} = {3 * i}")
for 迴圈

遍歷清單

Scratch
對 fruits 的每個項目
Python
for item in fruits:
fruits = ["蘋果", "香蕉", "芒果"]

for fruit in fruits:
    print(f"我喜歡吃 {fruit}")
我喜歡吃 蘋果
我喜歡吃 香蕉
我喜歡吃 芒果

也可以遍歷字串:

for char in "Python":
    print(char)
Scratch → Python

重複直到 → while

Scratch
重複直到 count >= 5
將 count 增加 1
Python
count = 0
while count < 5:
    count += 1
    print(count)
注意無限迴圈!

確保迴圈條件最終會變成 False,否則程式會永遠執行。用 Ctrl+C 中斷。

while 迴圈

while 實用範例

猜數字遊戲:

secret = 42
guess = 0

while guess != secret:
    guess = int(input("猜一個數字:"))
    if guess < secret:
        print("太小了!")
    elif guess > secret:
        print("太大了!")

print("恭喜!猜對了!")
while vs for

for:知道確切的執行次數時用。
while:條件不確定、直到某件事發生才停止時用。

Scratch → Python

breakcontinue

Scratch
停止這個腳本
Python
break  # 跳出迴圈
# break — 找到目標就停止
for i in range(1, 100):
    if i % 7 == 0:
        print(f"第一個 7 的倍數:{i}")
        break  # 找到就停

# continue — 跳過這次,繼續下一次
for i in range(1, 11):
    if i % 2 == 0:
        continue   # 跳過偶數
    print(i)       # 只印奇數:1 3 5 7 9
進階

enumerate 與 zip

# enumerate — 同時取得索引和值
fruits = ["蘋果", "香蕉", "芒果"]
for i, fruit in enumerate(fruits):
    print(f"{i+1}. {fruit}")
# 1. 蘋果  2. 香蕉  3. 芒果

# zip — 同時遍歷兩個清單
names = ["Alice", "Bob", "Charlie"]
scores = [95, 82, 78]
for name, score in zip(names, scores):
    print(f"{name}:{score} 分")
List Comprehension(串列生成式)
squares = [x**2 for x in range(1, 6)]
# [1, 4, 9, 16, 25]
實用模組

🎲 random — 隨機數

搭配迴圈使用 random 模組,可以做出猜數字、抽獎等互動程式。

import random

# 隨機整數(含頭含尾)
random.randint(1, 100)   # 1~100 之間的隨機整數

# 從清單中隨機選一個
colors = ["紅", "藍", "綠", "黃"]
random.choice(colors)    # 隨機選一個顏色

# 打亂清單順序
nums = [1, 2, 3, 4, 5]
random.shuffle(nums)     # nums 變成隨機排列

# 隨機小數
random.random()          # 0.0 ~ 1.0 之間
實用模組

🎲 random + 迴圈實例

import random

# 模擬擲骰子 10 次,統計結果
results = {}
for _ in range(10):
    dice = random.randint(1, 6)
    results[dice] = results.get(dice, 0) + 1

print("擲骰子 10 次的結果:")
for face, count in sorted(results.items()):
    bar = "■" * count
    print(f"  {face}:{bar} ({count}次)")
擲骰子 10 次的結果:
1:■■ (2次)
3:■■■ (3次)
4:■ (1次)
5:■■ (2次)
6:■■ (2次)
小提醒

random 是 Python 內建模組,不用另外安裝,直接 import random 就能用!

實作練習

動手試試看

用迴圈完成以下任務:

# 任務 1:印出九九乘法表
for i in range(1, 10):
    for j in range(1, 10):
        print(f"{i}×{j}={i*j}", end="\t")
    print()   # 換行

# 任務 2:找出 1~100 所有質數
for num in range(2, 101):
    is_prime = True
    for i in range(2, int(num**0.5) + 1):
        if num % i == 0:
            is_prime = False
            break
    if is_prime:
        print(num, end=" ")

第三章完成!

學會了 for、while、break、continue 以及迭代技巧。