中三 ICT|Python 迴圈與函數 備課指引(導師用)|for/while、range、累加器、return
- 2026-11-12
學生寫得出 for i in range(5),但你叫他加總一到十,他會寫 print(1+2+3)。這一堂要教的不是語法,而是「一個變數記住中途結果」這個想法。
本堂目標 學生能夠:① 用 for 加 range(1, 11) 加總 1 到 10 得 55,並講出 range 的上限不包含在內;② 寫出累加器三步(先設 total = 0、迴圈內 total = total + i、迴圈後才 print),並解釋為甚麼歸零要在迴圈之前;③ 定義一個帶參數與 return 的函數,例如 def average(nums) 回傳平均值,並講出參數、區域變數與回傳值三者的分別。
01 先備知識(開課前 3 分鐘快檢)
以下任何一項未過關,本堂就會卡住,先補該項:
| 技能 | 快檢題 | 過關標準 |
|---|---|---|
| 變數 | x = 5 之後再寫 x = 7,x 是多少? | 7,後面的指派蓋過前面 |
| 縮排 | Python 用甚麼表示「這幾行屬於迴圈」? | 縮排,通常是四個空格 |
| 課本函數 | print 與 input 的分別是甚麼? | print 輸出到螢幕,input 由鍵盤讀入字串 |
02 課堂流程(45 分鐘)
| 時間 | 環節 | 導師做什麼 | 學生做什麼 |
|---|---|---|---|
| 0-6 分鐘 | 先手算 | 叫學生手算 1 加到 10,寫出 55,再要求用程式一次算完 | 手算得 55,意識到要迴圈 |
| 6-16 分鐘 | for 與 range | 示範 range(1, 11) 印出 1 到 10,改 range(1, 12) 看分別 | 能講出上限不包含 |
| 16-26 分鐘 | 累加器三步 | 在黑板分三行寫 total = 0、total = total + i、print(total) | 能寫出完整四行並執行 |
| 26-34 分鐘 | while 與停止條件 | 用 while 重做同一題,故意漏 i = i + 1 示範無限迴圈 | 能指出停止條件在哪一行 |
| 34-40 分鐘 | 函數與 return | 把加總包成 def add_to(n),再示範 return 與 print 的分別 | 能寫出一個帶 return 的函數 |
| 40-45 分鐘 | 離場檢查 | 收三題即場批,指出要補哪一幕 | 交三題 |
03 講解腳本(照著說就可以)
第一幕:第一幕:range 的上限不包含在內
「for i in range(1, 11) 會印 1 到 10,唔會印 11。為甚麼?因為 range 講的是『由第一個數開始,去到第二個數之前停』。所以想加到 10,就要寫 11;想印五次,就寫 range(5),等同 range(0, 5)。第三個參數是步長:range(2, 11, 2) 得 2、4、6、8、10,加起來 30。如果你寫 range(1, 10),加起來是 45 唔係 55,差咗個 10,這個錯最少人發現,因為程式照跑,只係答案靜靜地錯。」
上限前停一格;想加到 n 就寫 n+1。
第二幕:第二幕:累加器要先歸零,而且在迴圈之前
「四行:total 等於 0;for i in range(1, 11);縮排寫 total 等於 total 加 i;迴圈完之後 print。為甚麼歸零要在外面?如果你把 total 等於 0 寫在迴圈裡面,每一圈都會清空,最後只會印出 10。為甚麼 print 要放外面?放裡面會印十次中途結果,你會見到 1、3、6、10、15、21、28、36、45、55,其實這串數字很有用,是每個階段的和,但如果題目問總和,就只要最後一個。這個變數叫累加器,其他常見版本是計數器 count 加一、乘積 product 乘 i。」
歸零在外、print 在後;放錯位置答案就靜靜地錯。
第三幕:第三幕:參數是入口,return 是出口
「def average(nums) 冒號,縮排寫 total 等於 0,for n in nums 累加,最後 return total 除 len(nums)。三個名詞要分清楚:nums 是參數,呼叫時才拿到值;total 是區域變數,函數做完就消失;return 把結果交出去,外面要用就要接住,例如 ans 等於 average 清單。最常混淆的是 print 與 return:print 只顯示,函數外面拿不到;return 交出去,但本身不會顯示。所以寫完函數要自己印一次答案,否則你會以為函數無效。」
參數入、return 出;print 唔等於 return。
04 必教題型與步驟
| 題型 | 例子 | 步驟 | 答案 |
|---|---|---|---|
| 迴圈加總 | 用 for 加總 1 到 10,寫出完整程式。 | (1)設 total = 0(2)for i in range(1, 11)(3)縮排累加(4)迴圈後 print | total = 0;for i in range(1, 11): total = total + i;print(total) 得 55 |
| while 與停止條件 | 用 while 重做同一題,並指出停止條件。 | (1)設 i = 1 與 total = 0(2)while i <= 10(3)迴圈內累加並 i = i + 1(4)print | 停止條件是 i <= 10;漏寫 i = i + 1 會無限迴圈 |
| 累加器位置 | 以下程式只印出 10,錯在哪裡?for i in range(1, 11): total = 0; total = total + i | (1)找 total = 0 的位置(2)判斷是否在迴圈內(3)移出迴圈(4)再執行核對 | total = 0 被縮排入迴圈,每圈重設;移出迴圈即得 55 |
| 函數與回傳 | 寫一個函數回傳 2 到 10 之間所有偶數的和。 | (1)def 名稱帶參數(2)total = 0(3)for n in range(2, 11, 2) 累加(4)return total 並在外部 print | def even_sum(): total = 0; for n in range(2, 11, 2): total += n; return total,得 30 |
合理性檢查(一定要教):合理性檢查:1 到 10 的總和必須是 55,若得 45 表示 range 上限錯一格;1 到 5 的平方和也是 55,兩個 55 要用不同算式核對,不要互相當證據;偶數 2 到 10 合共五個數,和 30,若算出 25 表示漏了 10;5 的階乘是 120,用乘積累加器時 product 必須由 1 開始,由 0 開始永遠得 0;迴圈次數可以用手數,3 乘 4 的嵌套迴圈一定是 12 次,不是 7 次。
05 獨立練習三題
| 題目 | 答案 | 想觀察什麼 |
|---|---|---|
| 寫一個 for 迴圈印出 1 到 20 的單數。 | for i in range(1, 21, 2): print(i) | 步長 2,由 1 開始 |
| 寫一個函數回傳三個數的平均,並用 62、78、85 測試。 | def average(a, b, c): return (a + b + c) / 3,得 75.0 | return 之後要 print 才見到 |
| 為甚麼 while 迴圈要特別小心?舉一個出錯例子。 | 停止條件永遠成立就會無限迴圈,例如漏寫 i = i + 1,程式不會停 | 每次寫 while 都先寫停止條件 |
06 學生常見錯誤與糾正句
| 錯誤 | 學生通常這樣寫 | 導師這樣說 |
|---|---|---|
| range 少一格 | 「range(1, 10) 就係 1 到 10。」 | 「range 停在上限之前,所以係 1 到 9,和係 45。要寫 11,先得 55。」 |
| 累加器歸零放了在迴圈內 | 「total 等於 0 寫入迴圈方便啲。」 | 「每圈都清零,最後只餘最後一個數 10。歸零要放迴圈之前,print 放迴圈之後。」 |
| print 當成 return | 「我個函數有 print,所以外面用得到。」 | 「print 只係顯示,函數外面拿到的是 None。要用 return 交出去,再在外面 print。」 |
| 縮排不一致 | 「縮排只係好唔好睇。」 | 「Python 靠縮排判斷邊幾行屬於迴圈,混用空格與 Tab 會出 IndentationError,一行四個空格最穩。」 |
07 家課建議(直接指到練習卷題號)
- 章節練習:用 for 加總 1 到 100,再用公式核對 Python 章節,練習第一題
- 章節練習:把加總包成函數,改參數測試 10、100、1000 Python 章節,練習第二題
- 延伸:用嵌套迴圈印一個 3 行 4 星的長方形,數出總共幾多粒星 Python 章節,練習第三題
08 離場檢查(最後 5 分鐘)
| 題目 | 答案 | 判定 |
|---|---|---|
| range(1, 11) 包不包括 11? | 不包括,包 1 到 10 | 答錯就重教第一幕 |
| 累加器為何要在迴圈之前歸零? | 在迴圈內歸零會每圈清空,只餘最後一個值 | 答不出就重教第二幕 |
| return 與 print 的分別? | return 把值交回呼叫者,print 只顯示 | 混淆就重教第三幕 |
09 導師常問
要教 list comprehension 嗎?
中三不需要;先讓學生寫得出四行基本迴圈,語法糖留到高中。
學生寫 while True 加 break 可以嗎?
可以但先不鼓勵;考試與批改看的是停止條件是否清楚,while True 容易掩蓋邏輯。
要不要教例外處理?
這一堂不教;輸入錯誤留到檔案與資料處理那一章,先鞏固迴圈與函數。
本頁為 TutorZone 導師備課指引,內容由 TutorZone 團隊編寫;題目與流程為原創,並非任何學校或出版社的教材。


