學生看示範個個明白,自己一寫就漏冒號、漏縮排、把 = 當成比較。這一堂只練三件事:變數要追蹤、選擇要守條件、迴圈要數清次數,最後用 1 至 100 之和 5050 這條題目把三者串起來。
本堂目標 學生能夠:① 寫出 for 迴圈累加 1 至 100 得 5050,並用 n(n+1)/2 驗算;② 用 if / elif 為 [45, 52, 68, 39, 71] 判等級並數出 3 個及格;③ 算出平均值 55.0;④ 講出 range(3) 得 0、1、2 而非 1、2、3,並解釋縮排決定迴圈範圍。
01 先備知識(開課前 3 分鐘快檢)
以下任何一項未過關,本堂就會卡住,先補該項:
| 技能 |
快檢題 |
過關標準 |
| 變數 |
x = 5 之後 x = x + 1,x 是多少? |
6 |
| 比較運算 |
== 與 = 有什麼分別? |
一個比較,一個賦值 |
| 整數除法 |
7 // 2 是多少? |
3 |
| 輸出 |
print(3 + 4) 會顯示什麼? |
7 |
02 課堂流程(60 分鐘)
| 時間 |
環節 |
導師做什麼 |
學生做什麼 |
| 0–8 分 |
開場 |
問:點樣叫電腦加 1 到 100? |
講出逐個加與公式兩條路 |
| 8–20 分 |
變數與順序 |
累加器 total = 0 開始 |
自己寫出三行累加 |
| 20–32 分 |
選擇結構 |
用 if / elif 判等級 |
自己補上所有冒號 |
| 32–44 分 |
迴圈 |
for 與 range 的邊界 |
自己講出 range(1,101) 的原因 |
| 44–52 分 |
函數與除錯 |
把平均寫成函數 |
自己找出縮排錯 |
| 52–60 分 |
獨立練習 |
三題限時 8 分鐘 |
做完對答案並標錯因 |
03 講解腳本(照著說就可以)
第一幕:先追一次變數,再寫第二行
累加器一定要先設 total = 0,然後在迴圈內 total = total + i。學生最容易漏掉初始化,於是出現 NameError,或者把初始化寫進迴圈令答案永遠等於最後一個數。教法:每一輪要學生在紙上寫出 i、total 兩個格,跑三次才准打鍵盤。這個習慣一建立,之後所有累加、計數、找最大值都用同一招。
要學生在紙上追三次迴圈,寫出 i 與 total 的每一輪數值。
第二幕:range 的右邊界不入數,縮排決定誰在迴圈內
range(1, 101) 才包含 100,寫 range(1, 100) 只得 4950。縮排則是第二把刀:縮排一次在迴圈內,不縮排在迴圈後。學生寫完總會問「為何總和只得最後一個數」,答案永遠是縮排位置。示範時故意把 print 拉出迴圈再拉回去,讓學生看輸出變化,比講十次規則有效。
要學生講出 range(1, 100) 的總和是多少,並解釋為何不是 5050。
第三幕:用公式驗證迴圈,用測試驗證選擇
5050 這條題目好在有第二條路:n(n+1)/2 得 5050,兩條路答案相同就代表迴圈寫對。選擇結構則靠測試案例:45 應為不及格、52 及格、71 良好,三個都對才叫完成。要學生養成一個反射——寫完先想「我點知它對」,這一步就是 DSE 卷程式的除錯分。
要學生用公式算出 100 的和,並用一個測試案例證明 if 寫對。
04 必教題型與步驟
| 題型 |
例子 |
步驟 |
答案 |
| 累加題 |
1 至 100 之和 |
① total = 0 ② for i in range(1,101) ③ total += i |
5050 |
| 選擇結構題 |
把分數轉等級 |
① 由高到低排條件 ② 每行補冒號 ③ 用測試案例驗 |
71 為良好 |
| 計數題 |
數出 [45,52,68,39,71] 幾個及格 |
① count = 0 ② if m >= 50 才加 ③ 印出 count |
3 個 |
| 平均值題 |
五個分數的平均 |
① sum 累加 ② 除 len ③ 保留一位小數 |
55.0 |
合理性檢查(一定要教):數量級檢查:1 至 100 之和一定大於 100 而小於 10000,答 100 代表迴圈只跑一次,答 4950 代表漏了 100。平均值一定落在最低分 39 與最高分 71 之間,答 275 就是忘記除。次數檢查:計數器的值不可能大於列表長度 5,答 6 就是條件寫成 > 或把 else 也加了。
05 獨立練習三題
| 題目 |
答案 |
想觀察什麼 |
| 1 至 20 之中所有偶數之和 |
110 |
有無用 x % 2 == 0 篩選 |
| range(3) 會產生哪幾個數? |
0、1、2 |
有無以為由 1 開始 |
| [45,52,68,39,71] 之中及格(≥50)人數 |
3 個 |
有無把 50 分算及格 |
06 學生常見錯誤與糾正句
| 錯誤 |
學生通常這樣寫 |
導師這樣說 |
| 把 = 當比較 |
「if mark = 50: 就會判斷」 |
「單等號是賦值,電腦會直接把 50 塞入 mark;要比較就要雙等號 ==。」 |
| 縮排錯位 |
「print(total) 放喺迴圈外面都一樣」 |
「放外面只印最後一次結果;你原本想看每一輪,就要留在迴圈內。」 |
| range 邊界 |
「range(1, 100) 會加到 100」 |
「range 右邊界不入數,你少了 100 這個數,所以總和是 4950。」 |
| 忘記初始化累加器 |
「total = total + i 直接開始」 |
「total 未定義就加,電腦不知道由幾開始;先寫 total = 0,這一格就是你的起點。」 |
07 家課建議(直接指到練習卷題號)
08 離場檢查(最後 5 分鐘)
| 題目 |
答案 |
判定 |
| 1 至 100 之和 |
5050 |
錯:漏了 100 得 4950 |
| range(3) 產生的數 |
0、1、2 |
錯:以為是 1、2、3 |
| 五個分數 45、52、68、39、71 的平均 |
55.0 |
錯:忘記除數目 |
| 及格(≥50)人數 |
3 個 |
錯:把 50 當不及格 |
09 導師常問
for 與 while 幾時用邊個?
次數已知就用 for,次數未知、要靠條件停就用 while;兩者都可以互換,但用對會令程式更易讀。
為何 Python 用縮排而不是大括號?
縮排本身就是語法,代表程式區塊;縮排亂了程式就錯,所以編輯器要用固定四個空格,不要混用 tab。
DSE 卷會考哪種語言?
課程要求以偽代碼或高階語言表達邏輯,學校多用 Python;答題時寫清楚輸入、處理、輸出三步就夠。
立即免費搵導師導師登記 →
本頁為 TutorZone 導師備課指引,內容由 TutorZone 團隊編寫;題目與流程為原創,並非任何學校或出版社的教材。