← 返回大綱
第三章

迴圈控制
與迭代

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]
實作練習

動手試試看

用迴圈完成以下任務:

# 任務 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 以及迭代技巧。