2025年3月6日 星期四

Python 18 小時入門--第 3 小時:迴圈(for, while)

 📌 第 3 小時:迴圈(for, while)

在程式設計中,迴圈(Loop) 可以讓我們 重複執行相同的程式碼,直到滿足條件為止。Python 提供兩種常見的迴圈:

  • for 迴圈:適用於已知執行次數的情境,例如重複執行 10 次。
  • while 迴圈:適用於不確定執行次數,但依據條件決定是否繼續執行的情境。

🔹 for 迴圈

當我們知道確切執行次數時,可以使用 for 迴圈。
範例:重複執行 5 次

for i in range(1, 6):  
    print(f"第 {i} 次")

📌 range(start, stop, step) 用來產生一個數字序列

  • range(1, 6) 產生數字 1, 2, 3, 4, 5stop 參數不包含在內)
  • range(n) 會產生 0 到 n-1
  • range(start, stop, step) 可設定步長

範例:跳過偶數

for i in range(1, 10, 2):  # 1 到 9,間隔 2
    print(i, end=" ")  # 輸出:1 3 5 7 9

🟢 for 迴圈搭配列表

Python for 迴圈可直接遍歷 列表(list)

fruits = ["apple", "banana", "cherry"]
for fruit in fruits:
    print(fruit)

📌 for 迴圈適用於列表(List)、字串(String)、字典(Dictionary)等可迭代物件


🔹 while 迴圈

當我們不知道執行次數,而是根據條件決定是否繼續執行時,應該使用 while 迴圈。

範例:從 5 倒數到 1

n = 5
while n > 0:
    print(f"倒數: {n}")
    n -= 1  # 每次減少 1

📌 while 迴圈的執行條件

  1. 先判斷條件是否為 True
  2. 若條件為 True,則執行迴圈內的程式碼
  3. 若條件為 False,則終止迴圈

範例:讓使用者一直輸入,直到輸入 "exit" 為止

user_input = ""
while user_input != "exit":
    user_input = input("請輸入文字(輸入 'exit' 離開):")
    print(f"你輸入了:{user_input}")
print("程式結束")

📌 適用場景

  • while 迴圈適合用於 持續等待某個條件發生,例如:
    • 等待用戶輸入正確的數據
    • 等待特定事件發生(如計時器、網路請求)
    • 無限迴圈(直到手動終止)

🔹 break 與 continue

Python 提供 breakcontinue 來控制迴圈的執行:

  • break:直接跳出迴圈(不再執行後續迴圈)
  • continue:跳過本次迴圈,繼續執行下一次迴圈

🟢 使用 break 提前結束迴圈

for i in range(1, 10):
    if i == 5:
        print("提早結束迴圈")
        break  # 當 i == 5,直接跳出迴圈
    print(i)

📌 執行結果

1
2
3
4
提早結束迴圈

🟢 使用 continue 跳過本次迴圈

for i in range(1, 6):
    if i == 3:
        print("跳過 3")
        continue  # 跳過 3,不執行 print(i)
    print(i)

📌 執行結果

1
2
跳過 3
4
5

🔹 continue 會跳過當前迴圈的剩餘部分,直接進入下一次迴圈。


🔹 else 搭配 forwhile

Python 允許在 forwhile 迴圈後加上 else

for i in range(1, 4):
    print(i)
else:
    print("迴圈正常結束")

📌 else 只會在迴圈「正常結束」時執行,若有 break,則 else 不會執行。

範例:檢查數字是否為質數

num = 7
for i in range(2, num):
    if num % i == 0:
        print(f"{num} 不是質數")
        break
else:
    print(f"{num} 是質數")

🔹 巢狀迴圈(Nested Loops)

Python 允許 forwhile 迴圈**巢狀(nested)**使用:

for i in range(1, 3):  # 外層迴圈
    for j in range(1, 4):  # 內層迴圈
        print(f"i={i}, j={j}")

📌 巢狀迴圈的時間複雜度較高,避免過度使用!

範例:輸出九九乘法表

for i in range(1, 10):
    for j in range(1, 10):
        print(f"{i} × {j} = {i*j}", end="\t")
    print()  # 換行

🔹 無窮迴圈(Infinite Loop)

如果 while 條件永遠不會變成 False,則會形成 無窮迴圈

while True:  # 這樣的寫法會導致無窮迴圈
    print("這是一個無窮迴圈,請使用 Ctrl + C 停止執行")

🔹 無窮迴圈的常見用途

  1. 遊戲主迴圈(直到玩家選擇結束)
  2. 伺服器永遠監聽請求
  3. 等待用戶輸入

📌 避免無窮迴圈,應在適當時機使用 break 退出!

範例:讓使用者輸入數字,直到輸入 0 為止

while True:
    num = int(input("請輸入數字(輸入 0 結束):"))
    if num == 0:
        print("程式結束")
        break
    print(f"你輸入了 {num}")

📌 第 3 小時小結

Python 提供 forwhile 兩種迴圈for 迴圈適用於 確定執行次數while 迴圈適用於 不確定執行次數break 提前結束迴圈,continue 跳過當前迴圈else 可與迴圈搭配,當迴圈正常結束時執行巢狀迴圈適用於輸出表格或九九乘法表避免無窮迴圈,需設計適當的終止條件

至此,你已掌握 Python 條件判斷與迴圈,下一步將學習 函式與模組,讓程式碼更有結構與可重複使用性!🚀

沒有留言:

張貼留言