讓 AI 解釋看不懂的程式
接手別人的程式、看網路範例、讀 AI 自己寫的程式碼,都可能卡住。這堂課教你用由遠到近的方式請 AI 解釋,並確認自己真的懂了。
學寫程式最常見的卡關,不是自己寫不出來,而是看不懂別人寫的。可能是網路上找到的範例、同事留下的腳本,或是 AI 剛剛幫你寫好、你卻不確定它在做什麼的程式。
好消息是,「解釋程式」正是 AI 最擅長的工作之一。還記得第一堂說的嗎?模型讀過大量程式碼與說明文件,所以很會把一段程式翻成人話。而上一堂學的「把資訊放上桌」,在這裡一樣適用:你越說清楚自己卡在哪,它的解釋就越對味。
尤其是 AI 幫你寫的程式,看懂它是你的責任。不懂的程式不要直接拿去用,這堂課就是讓你有能力把它弄懂。
看不懂就說出來,沒什麼好丟臉
先看一段範例。假設你在網路上找到一段把記帳資料按類別加總的程式:
from collections import defaultdict
import csv
def summarize(path):
totals = defaultdict(int)
with open(path, encoding="utf-8") as f:
for date, category, amount in csv.reader(f):
totals[category] += int(amount)
return dict(sorted(totals.items(), key=lambda kv: -kv[1]))
如果你是初學者,defaultdict、with open、lambda kv: -kv[1] 可能都很陌生。直接丟給 AI 說「解釋這段」,也許會得到一大篇面面俱到的說明,但讀完還是霧煞煞。
由遠到近,分三層問
比較有效的做法,是像看地圖一樣,先看全貌,再慢慢放大。
不要一開始就逐行解釋,先知道「這是什麼」,細節才有地方掛。
第一層:它在做什麼?
我是 Python 初學者,看不懂下面這段程式。請先不要逐行解釋,用三句話告訴我:
- 這段程式的用途是什麼?
- 它需要什麼輸入?
- 它會產生什麼輸出?請舉一個具體的例子。
(貼上程式碼)
AI 可能會回答:這是讀取一個 CSV 記帳檔,把同類別的金額加起來,最後按金額由大到小排序回傳。例如午餐 215、交通 30。光是這三句,你就已經有了方向。
第二層:分成哪幾段?
接著請它幫你把程式切塊,說明每一塊的角色和資料的流向。這一層特別適合比較長的程式,或是有好幾個函式的檔案。
謝謝。現在請把這段程式分成幾個段落,說明每一段負責什麼,以及資料是怎麼從一段傳到下一段的。可以畫一個簡單的文字流程圖。
第三層:只問你卡住的那一行
最後才進入細節,而且只挑你真的不懂的地方問:
最後一行的 key=lambda kv: -kv[1] 我看不懂。
lambda是什麼?kv是哪裡來的?- 為什麼前面有一個負號?
請用一個只有三筆資料的小例子,示範這一行執行前後的差別。
「用小例子示範」是很好用的一招。抽象的說明不容易懂,但看到 {'午餐': 215, '交通': 30} 實際被排序的樣子,就一目瞭然。
讓解釋貼近你
同一段程式,對不同人需要不同的解釋。你可以在提問時加上這些資訊:
| 告訴 AI | 例子 |
|---|---|
| 你的程度 | 我只學過變數和 for 迴圈 |
| 你熟悉的東西 | 我會用 Excel,可以用 Excel 來比喻嗎? |
| 你的目的 | 我要修改它,讓它也能算每月平均 |
| 想要的格式 | 請在原始程式碼每一行後面加中文註解 |
最後一種「請在每行加中文註解」特別實用,你可以把加了註解的版本存下來,當作自己的學習筆記。
確認你真的懂了
讀完解釋覺得「好像懂了」,和真的懂,中間還有一段距離。最快的檢查方法是反過來講給 AI 聽:
我用自己的話說一遍這段程式在做什麼,請你檢查我哪裡講錯或講得不精確,不要直接給我完整答案,用提示的方式引導我修正:
「這個函式會打開 CSV 檔,一行一行讀出日期、類別、金額,用一個字典記錄每個類別的總金額,最後把字典按照……」
另一個方法是動手改一點點:例如把排序改成由小到大,或是多印出一個合計。如果你能預測修改後的結果,而且實際執行也符合預期,那就是真的懂了。
- 找一段你看不太懂的程式:可以是網路範例、課本程式,或請 AI 寫一段「讀取 CSV 並統計」的程式。
- 依照三層順序問 Claude 或其他 AI:全貌、結構、你卡住的那一行。
- 用自己的話把整段程式講一遍,請 AI 糾正。
- 做一個小修改(例如改變排序方向),先預測結果,再執行驗證。
讀完了嗎?
標記完成後,單元與專案的進度會自動更新(只存在這台裝置的瀏覽器)。
留言與討論
卡關了、有心得,或發現內容需要更新?都歡迎留言。留言使用 GitHub 帳號登入。