條件判斷與循環
進階程式不一定一口氣執行到底:if 讓它選路,loop 讓它重複。有了這兩樣,程式才會「想東西」和「省工夫」。
- if/如果…否則=選路;就是流程圖的菱形
- == 才是問相等;= 是放入變數
- for/重複 N 次=計數循環;range(n) 由 0 數到 n-1
§課文原文 Passage
1條件判斷令程式懂得「選路」:條件成立便執行 A,否則執行 B,就像「下雨便帶傘」的日常決定。循環則令程式自動重複執行任務,不必把同一句程式碼抄寫十次,既節省空間,又減少出錯機會。兩者合稱控制結構,決定程式的流向,是編程思維的核心,也是流程圖中菱形與分支箭嘴的由來。
2實際寫法上,Scratch 以「如果……那麼……否則」積木配合「重複執行」積木;Python 則使用 if-else 語句與 for 循環,並靠縮排標示哪些程式碼屬於條件或循環之內,縮排錯誤會令程式無法執行。常見練習包括用循環輸出 1 至 10 的數字、以條件判斷分數是否及格,或把兩者結合,重複檢查全班每位同學的成績。
3香港日常例子:巴士上的八達通機先判斷卡內餘額是否足夠才扣款,電梯逐層上落、應答各層的按鈕,港鐵閘機驗票成功才開閘,自動門感應到有人靠近才打開,全部都是條件判斷與循環的應用。生活之中這兩種結構無處不在,掌握之後,編程思維便向前跨進一大步。
1重點摘要 Summary
程式不一定一口氣執行到底:if 讓它選路,loop 讓它重複。有了這兩樣,程式才會「想東西」和「省工夫」。
2生字卡 Vocabulary
一句真/假的判斷,例如 分數 ≥ 50。
條件真行 A 段,假行 B 段;Scratch 叫「如果…那麼…否則」。
== 相等、!= 不等、> 大於、< 小於、>=、<=。
重複執行某段程式;Scratch 叫「重複執行 N 次」。
Python 的 for i in range(5) 會執行 5 次(i 由 0 數到 4)。
Python 用行首空格表示「哪些行屬於 if/loop 裡面」,不縮排會出錯。
條件成立就不斷重複的循環;條件要能夠變成假,否則變成無限循環。
取得除法餘數的運算符,例如 7 % 2 = 1;餘 0 即是雙數。
3逐步講解 Steps
- 選路:if流程圖的菱形翻譯成程式碼就是 if。Python 的寫法是:if score >= 50: 下一行縮排 print('合格'),再加 else: print('不合格'),程式便會按分數自動選路。Scratch 則對應「如果……那麼……否則」積木,把條件填進六角形格子。兩種工具邏輯完全一樣:條件成立時走第一條路,不成立時走另一條。初學者常見錯誤是忘記在 if 那一行的結尾加上冒號,程式便會立即出現語法錯誤。
- 比較符號比較符號只有幾個,卻最常寫錯:兩個等號 == 用來問「是不是相等」;一個等號 = 只是把東西放入變數,兩者完全不同。大於 >、小於 <、大於或等於 >=、小於或等於 <= 與數學用法接近,!= 則表示「不等於」。所有比較的結果只有兩種:「真 True」或「假 False」。常見錯誤是把 = 當成 == 使用,例如 if score = 50: 會令程式直接出現語法錯誤,記住「問相等,寫兩個」。
- 重複:loop重複執行的工作用循環處理:Scratch 使用「重複執行 10 次」積木,把要重複的積木放進去;Python 寫 for i in range(10): ,下面縮排的部分便會重複十次。range(10) 產生 0 至 9 十個數,正好重複十次,這一點最容易寫錯,因為許多人以為 range(10) 包含 10。想由 1 數到 10,就要寫 range(1, 11),起點包含、終點不包含。用循環代替抄寫十次程式碼,既節省篇幅又減少出錯。
- 縮排規矩Python 不用括號圈住「裡面那段」程式碼,而是用縮排,即行首的空格,慣例是四格。同一層的敘述必須對齊;if 或 for 底下的內容要多縮一層。縮錯位置,程式輕則出現 SyntaxError 無法執行,重則文法正確卻做錯事,例如把某一行多縮了一格,令它意外地成為循環的一部分。Scratch 用積木的凹凸形狀表達同樣概念:積木嵌得越深,便是在越裡面的循環或條件之內。
- 經典組合:for+if想印出 1 至 10 裡面所有雙數,就要把循環和條件結合:外層寫 for i in range(1, 11): ,內層縮排 if i % 2 == 0: ,再縮一層寫 print(i)。符號 % 表示求餘數,i % 2 == 0 即是 i 除以 2 餘 0,也就是雙數。執行時程式把每個 i 輪流測試一次,符合條件才印出。這個組合是考試熱門題目,例如改成印出 3 的倍數,只需把條件改為 i % 3 == 0,其餘寫法不變。
- while:條件成立就繼續while 適合「事前不知道要重複多少次」的任務:寫 while score < 100: ,下面縮排的程式會一直重複,直到條件變成假為止。循環裡面必須有敘述令條件最終改變,例如 score = score + 10,否則條件永遠成立,程式就會變成無限循環,停不下來。舉例來說,不斷輸入分數直到總分達標,便適合用 while,因為事先無法知道要輸入多少次。寫完 while 之後,先檢查循環內有沒有一行令條件改變,這是避免當機的關鍵。
4圖解 Diagrams
5例題示範 Example
例題:以下程式輸出什麼?for i in range(3): 裡面縮排 print(i)
- 先拆解 range(3):它產生 0、1、2 三個數,因為 Python 由 0 開始計數,而且不包含終點 3。
- 循環把每個 i 依次傳給 print,所以 print 會執行三次,分別印出 0、1、2 各一行。
- 常見錯誤是以為輸出是 1、2、3;只要記住「由 0 起計、終點不包」,便不會墮入陷阱。
- 引伸:想輸出 1、2、3,就要寫 range(1, 4),起點 1 包含在內,終點 4 不包含在內。
- 答案:輸出三行:0、1、2。關鍵是 range(3) 由 0 開始產生三個數,並且不包含 3 本身;想數 1 至 3,便要寫 range(1, 4),因為範圍永遠包含起點、不包含終點。
6常見錯誤 Mistakes
75 題快測 Quick check
Q1Python 裡面「判斷相等」用哪個符號?A. = B. == C. =>
Q2for i in range(4) 會執行多少次?
Q3用中文講出 if...else 的意思。
Q4判斷變數 score 是否 50 分或以上,寫出 if 那一行。
Q5Scratch 的「重複執行 10 次」對應 Python 哪一句?
8重點回顧 Recap
- if/如果…否則=選路;就是流程圖的菱形
- == 才是問相等;= 是放入變數
- for/重複 N 次=計數循環;range(n) 由 0 數到 n-1
- Python 縮排決定哪些行在 if/loop 裡面
- for+if 組合:循環逐個檢查,條件選出想要的數