用 AI 學程式設計:不只複製答案的學習方法|手把手教學

情境開場

上週你收到一份 Python 作業:寫一個計算 BMI 的程式。你打開 ChatGPT,輸入「寫一個計算 BMI 的 Python 程式」,三秒鐘得到一份完美的程式碼。你複製貼上、執行成功、交出作業。

這週,老師要求你修改程式,加入 BMI 分級(過輕、正常、過重、肥胖)。你盯著上週的程式碼,發現自己看不懂 if-elif-else 是怎麼串起來的,也不知道該在哪裡加新條件。

你又問了 AI,又得到一份新程式碼。但下次呢?再下次呢?

問題很清楚:複製程式碼跟學會程式設計是兩件事。AI 可以是很好的老師,但前提是你要用對方法。這篇教學會帶你建立一套「用 AI 學程式,但真的學會」的流程。

完成後你將能做到

  • 拿到程式題目時,先自己分析再找 AI 協助
  • 請 AI 給提示而不是直接要完整答案
  • 讀懂 AI 產出的程式碼,逐行解釋每一行在做什麼
  • 不看 AI 的版本,自己重寫一次來驗證理解程度
  • 用 AI 產生變形題,持續練習到熟練
  • 建立一份錯題本,追蹤自己的知識缺口
  • 獨立解決從未見過的新題目

學習地圖

步驟名稱時間完成的成果
Step 1先自己試,再找 AI5 分鐘你的第一版嘗試(即使不完整)
Step 2請 AI 給提示,不是給答案5 分鐘一組「求提示」的 Prompt 模板
Step 3讀懂程式碼,不是直接複製5 分鐘逐行註解版程式碼
Step 4自己重寫一次5 分鐘你的獨立版本 + 差異紀錄
Step 5請 AI 出變形題4 分鐘三道變形練習題
Step 6建立錯題本3 分鐘錯題本模板 + 第一筆紀錄
Step 7驗證你真的學會了3 分鐘獨立完成的新題目

預計總時間:30 分鐘。每一步你都會得到一項具體成果,不會只是「看完一段文字」。

1先自己試
2求提示
3讀懂程式
4自己重寫
5變形題
6錯題本
7獨立驗證
1

Step 1:先自己試,再找 AI

情境

你收到一道練習題:

「寫一個 Python 函式 calculate_cart_total,輸入是一個商品清單(每個商品有名稱和價格),輸出是購物車的總金額。」

你的第一反應可能是打開 AI,貼上題目,拿到答案。但在這之前,請先停下來。

你的任務

在紙上或編輯器裡,寫下你目前想到的解法。不需要完整,不需要能跑,只需要把你知道的部分寫出來。

開始前先想一想

拿到程式題目後,最好的第一步是什麼?

A直接貼給 AI,拿到完整答案
B上網搜尋一模一樣的題目
C先寫出你知道的部分,標記不確定的地方
D看完整個教學再開始

操作內容

試著寫出你的版本。可能長這樣:

def calculate_cart_total(items):
    total = 0
    for item in items:
        # 不確定怎麼從 item 拿到價格...
        total = total + ???
    return total

寫不出來也沒關係。寫出「我知道要用迴圈,但不知道怎麼取得每個商品的價格」就是一種進步,因為你已經明確知道自己的知識缺口在哪裡了。

如果你寫出了部分程式碼(即使有錯),恭喜。你剛才做的事情叫做「主動提取」(active recall)。研究證明,先嘗試回想再學習新知識,記憶效果比直接閱讀答案好兩到三倍。

如果你什麼都沒寫就直接想找 AI,請問自己:「我連函式的第一行 def 都不會寫嗎?」通常你知道的比你以為的多。哪怕只是寫出函式名稱和 return,都算是起點。

學程式的核心是建立「問題 → 解法」的神經連結。每次你自己想過一遍,這個連結就加強一次。直接看答案會讓你產生「我懂了」的錯覺,但那是辨認(recognition),不是回想(recall)。考試和實際工作要的是回想能力。

跳過自己嘗試的階段,就像看別人游泳來學游泳一樣。你可以看到動作,但下水後身體不知道怎麼動。

學習科學 研究證明「主動提取」比「被動閱讀」的記憶效果好 2-3 倍。先試再看,比先看再試有效得多。

本步驟產出

Step 1 完成確認

2

Step 2:請 AI 給提示,不是給答案

情境

你在 Step 1 卡住了。你知道要用迴圈,但不確定怎麼從商品清單中取得每個商品的價格。現在你要請 AI 幫忙,但方式很重要。

你的任務

寫一個「求提示」的 Prompt,而不是「求答案」的 Prompt。

好問法 vs 壞問法

不好的問法

「幫我寫一個計算購物車總金額的 Python 函式」

好的問法

「我想寫一個計算購物車總金額的函式,我知道要用迴圈,但不確定怎麼從 dict 取出價格。能給我提示嗎?不要直接給完整程式碼。」

操作內容

請用以下結構來寫你的 Prompt:

求提示 Prompt 模板
我在練習 [題目描述]。 我目前寫到這裡: [貼上你的程式碼] 我卡在 [具體問題] 這裡。 請給我提示,不要直接給完整答案。 提示的方向:概念、語法、或一個類比就好。

「Python 的字典可以用方括號加上 key 來取值。比如你有一個字典 fruit = {"name": "蘋果", "price": 30},那麼 fruit["price"] 就會得到 30。試著在你的迴圈裡,對每個 item 做一樣的事情看看。」

這個提示沒有給你完整程式碼,但告訴你關鍵概念。你可以自己把它組裝進你的函式裡。

學習科學裡有個概念叫「最近發展區」(Zone of Proximal Development)。你靠自己做不到,但在適當提示下能完成的區域,就是學習效果最好的地方。直接給答案讓你跳過了這個區域;只給提示則把你留在裡面。

常見問題 明明只想要提示,但 AI 還是給了完整程式碼。這時候你可以在 Prompt 裡加上「請只用文字描述概念,不要寫程式碼」,或者看到答案時主動遮住,先試著自己寫。

本步驟產出

Step 2 完成確認

3

Step 3:讀懂程式碼,不是直接複製

情境

經過前兩步,你可能已經寫出了一個能跑的版本,也可能最後還是請 AI 給了完整範例。不管哪種情況,現在有一份程式碼在你面前:

def calculate_cart_total(items):
    total = 0
    for item in items:
        total = total + item["price"]
    return total

cart = [
    {"name": "蘋果", "price": 30},
    {"name": "牛奶", "price": 65},
    {"name": "麵包", "price": 45}
]

print(calculate_cart_total(cart))

你的任務

逐行寫下每一行在做什麼。用你自己的話,不是複製 AI 的解釋。

以下這行程式 total += item['price'] 做了什麼?

A建立一個新的 item 變數
B把這個商品的價格加到 total 變數上
C印出商品的價格
D檢查價格是否正確

操作內容

在每一行旁邊加上你的理解:

def calculate_cart_total(items):  # 定義一個函式,接收一個叫 items 的參數
    total = 0                     # 建立一個變數 total,起始值是 0
    for item in items:            # 把 items 清單裡的東西一個一個拿出來
        total = total + item["price"]  # 把這個商品的價格加到 total 裡面
    return total                  # 迴圈跑完後,把總金額回傳出去

如果某一行你寫不出解釋,那就是你的知識缺口。把那一行單獨拿去問 AI:

詢問單行程式碼的 Prompt
請解釋這行 Python 程式碼在做什麼: total = total + item["price"] 我知道 total 是一個數字變數,但不確定 item["price"] 為什麼能拿到價格。item 是什麼型態?

程式設計師每天花大量時間「讀」程式碼,不只是「寫」。能讀懂別人(或 AI)的程式碼是一項獨立技能。逐行註解是訓練這項技能最有效的方法之一。當你能解釋為什麼每一行存在,你也就能修改它、擴充它、除錯它。

注意 如果你的註解只是複述程式碼本身(例如:「total = total + item price」→「把 total 加上 item price」),那不算理解。試著回答「為什麼」:為什麼要一個個加?為什麼不是一次加總?為什麼用字典的 key 來取值?

本步驟產出

Step 3 完成確認

4

Step 4:自己重寫一次(不看 AI 的版本)

情境

你已經讀懂了購物車程式的每一行。現在是最關鍵的一步:關掉 AI 的回答,自己從零寫一次。

你的任務

不看任何參考,憑你的理解,重新寫出 calculate_cart_total 函式。

開始前先想一想

  • 你記得函式的架構嗎?(定義 → 初始化 → 迴圈 → 回傳)
  • 你記得怎麼從字典取值嗎?
  • 你記得怎麼累加總和嗎?

操作內容

關掉所有參考資料。打開一個空白檔案,開始寫。寫完之後,打開 Step 3 的版本來比對。

def calculate_cart_total(items):
    total = 0
    for item in items:
        total += item['price']
    return total

如果你的版本跟這個不同,不代表你錯了。只要邏輯正確、能跑出對的結果就是好程式。

例如你可能用了 sum 而不是 total,用了 product 而不是 item,用了 += 而不是 total = total +。這些都是合理的不同寫法。

如果你能獨立寫出正確的版本(即使命名不同),代表你真的學會了。這不是看著食譜做菜,而是自己已經記住步驟了。

注意:sum 在 Python 裡是內建函式名稱。雖然你可以用它當變數名,但這會覆蓋掉內建功能。像這種細節就是實際寫程式會碰到的坑,AI 通常會避開,但你自己寫就可能踩到。把它記進錯題本。

認知心理學把這個方法叫「提取練習」(retrieval practice)。每次你不看答案、從記憶中提取知識的時候,記憶就會變得更強。這比重複閱讀同一段程式碼有效很多。差異比對則幫助你發現「以為懂了但其實沒有」的盲區。

本步驟產出

Step 4 完成確認

階段性整理 到這裡你已完成:先嘗試 → 求提示 → 讀懂 → 重寫。你有了第一版嘗試、Prompt 模板、逐行註解版程式碼、獨立重寫版本。接下來進入強化階段。
5

Step 5:請 AI 出變形題

情境

你已經能寫出基本的購物車總金額計算了。但一道題會做不代表這個概念學會了。你需要在不同的情境中反覆運用同一個概念,才能真正內化。

你的任務

請 AI 幫你出三道變形題,然後自己嘗試解答。

操作內容

產生變形題 Prompt
我剛學會寫「計算購物車總金額」的函式。 請根據這個概念,幫我出 3 道難度遞增的變形練習題。 要求: 1. 第一題只改變資料結構(例如 tuple 改 dict) 2. 第二題加入一個新條件(例如折扣) 3. 第三題結合兩個概念(例如迴圈+條件判斷) 每題只給題目描述,不要給答案。

題目一:計算購物車中「單價超過 50 元」的商品總金額。

題目二:每個商品多一個 quantity 欄位,計算含數量的總金額。

題目三:加入折扣機制。如果購物車總金額超過 500 元,打九折。回傳折扣前金額、折扣金額、實付金額。

學習科學裡這叫「交錯練習」(interleaving)和「變化練習」(varied practice)。同一個概念在不同情境中出現,你的大腦會抽取出「核心模式」,而不是只記住特定題目的步驟。這樣你碰到新題目時才能靈活應用。

常見錯誤 只做第一題就覺得「我會了」。一道題答對可能是運氣,三道題都答對才是理解。看到題目覺得太難、直接跳過或直接問 AI 要答案也是陷阱。「覺得難」正是學習正在發生的信號。

本步驟產出

Step 5 完成確認

6

Step 6:建立錯題本

情境

經過前面五步,你已經碰到了好幾個「不會」的時刻:可能是不知道怎麼從字典取值、可能是忘記初始化變數、可能是用了內建函式的名字當變數名。這些都是寶貴的學習素材。

你的任務

建立一份錯題本,把你在學習過程中犯的錯誤和不確定的地方記錄下來。

操作內容

用以下格式建立你的錯題本:

## 錯題本

### 紀錄 1
日期:2026-07-11
題目:計算購物車總金額
我的錯誤:用 sum 當變數名,覆蓋了 Python 內建函式
正確做法:用 total 或 cart_total 等不會衝突的名稱
背後概念:Python 的內建函式名稱可以被覆蓋,但會導致後續程式碼出錯
我的理解:命名變數時要避開 Python 關鍵字和內建函式名稱
相關練習:列出 5 個常見的 Python 內建函式名稱

錯題本必填項目

遺忘曲線告訴我們,學過的東西如果不複習,一週後只記得 20%。錯題本讓你有系統地回顧最容易忘記的部分。而且每次你重新解釋一個概念,理解就加深一層。

不要把錯題本當成懲罰紀錄。它是一份學習地圖,標示著「這裡有寶藏」。三個月後回頭看,你會發現自己進步了多少。

7

Step 7:驗證你真的學會了

情境

你已經從「看不懂程式碼」走到「能獨立寫出來並解釋為什麼」。最後一步是真正的測試:面對一個全新的、你從沒見過的題目,在不使用任何 AI 協助的情況下解決它。

你的任務

獨立完成以下題目,不開 AI、不看筆記、不查資料。限時十分鐘。

題目:寫一個函式 count_expensive_items(items, threshold),輸入是一個商品清單和一個價格門檻,回傳「價格超過門檻」的商品數量。

cart = [
    {"name": "蘋果", "price": 30},
    {"name": "牛奶", "price": 65},
    {"name": "牛排", "price": 350},
    {"name": "麵包", "price": 45}
]
print(count_expensive_items(cart, 50))  # 應該印出 2

現在開始寫。十分鐘後回來看下面的內容。

def count_expensive_items(items, threshold):
    count = 0
    for item in items:
        if item["price"] > threshold:
            count = count + 1
    return count

檢查你的版本:

  • 函式有接收兩個參數嗎?
  • 有用迴圈跑過所有商品嗎?
  • 有用 if 條件判斷價格是否超過門檻嗎?
  • 回傳的是數量(整數)而不是金額嗎?

你能不看任何參考,獨立寫出「計算清單中所有偶數的平均值」嗎?

A可以,我知道需要:迴圈、if 判斷偶數、加總、計算平均
B大概知道方向,但需要查 % 運算符怎麼用
C不確定,需要再回去看範例
D完全沒概念

最終測試的意義是確認你從「有輔助能做到」進步到「獨立能做到」。很多人在有 AI 協助時覺得自己都懂了,但一旦獨立面對新問題就卡住。這個測試幫你誠實面對自己的程度。

如果通過了,你就可以帶著信心進入下一個主題。如果沒通過,你也知道該複習哪裡。兩種結果都有價值。

最終挑戰

用你在這篇文章學到的完整流程,獨立處理這個新題目:

題目:寫一個函式 calculate_grades(students),輸入是學生清單,每個學生有 namescore。函式回傳一個新清單,每個學生多一個 grade 欄位:90 分以上是 A,80-89 是 B,70-79 是 C,60-69 是 D,60 以下是 F。

最終挑戰流程

不提供答案。你已經有方法了。

你完成的成果

  • AI 輔助程式學習流程(7 步循環)
  • 「求提示」Prompt 模板
  • 逐行註解練習法
  • 錯題本模板與第一筆紀錄
  • 獨立完成的驗證題
  • 一套可重複使用的學習系統

重點整理

AI 可以是很好的程式學習夥伴,但前提是你把它當作「教練」而不是「代寫服務」。

  • 先想再問:每次都先自己嘗試,哪怕只寫出一行
  • 要提示不要答案:讓 AI 引導你思考,而不是替你思考
  • 讀懂才算數:能逐行解釋的程式碼才是你的
  • 重寫驗證:不看參考能寫出來,才是真的學會
  • 反覆變形:同一概念在不同情境中練習
  • 紀錄錯誤:錯題本是最有效率的複習工具
  • 獨立測試:最後要能獨力面對新問題

如果你發現自己每次寫程式都離不開 AI,退一步想想:你是在用 AI 學習,還是在用 AI 代勞?答案通常在「你能不能用自己的話解釋你寫的每一行」。

知識檢測

讀完文章後,測試一下你對這個主題的理解。

延伸練習

選一個你正在學的程式主題(例如:檔案讀寫、API 呼叫、資料庫操作),用今天學到的七步流程來練習。特別注意:

  • 你是不是跳過了「先自己試」的步驟?
  • 你有沒有真的不看參考自己重寫過?
  • 你的錯題本有沒有持續在記?

一週後回顧你的錯題本,看看有哪些錯誤反覆出現,那就是你最需要加強的概念。

知識檢測

讀完文章後,測試一下你對這個主題的理解。