讓 AI 寫腳本,你負責驗收
學會把需求講清楚交給 Claude 或 Claude Code,再用一份五步驟的驗收清單,確認 AI 寫的自動化腳本真的正確、安全。
這一堂,是整個單元的總複習
這個單元你學了檔案、pandas、JSON、API 和排程。說實話,這些程式現在 AI 都能在幾秒內寫出來。那你學這些是為了什麼?
答案是:為了當一個合格的驗收者。AI 寫得快,但它不知道你的資料夾裡哪些檔案很重要,也不會替後果負責。你學過的每一堂課,都讓你更有能力判斷「這段程式可以放心執行嗎」。
兩種讓 AI 寫程式的方式
| Claude(聊天) | Claude Code(程式代理) | |
|---|---|---|
| 怎麼運作 | 你描述需求,它回覆程式碼,你自己複製、存檔、執行 | 它直接在你的電腦上讀檔案、寫程式、執行指令 |
| 適合 | 單一支小腳本、學習、問問題 | 有好幾個檔案的專案、需要反覆執行和修改 |
| 你的把關點 | 執行前讀過程式 | 每次它要執行指令或修改檔案時,會先請你同意,看清楚再按 |
(ChatGPT、Gemini、Cursor、GitHub Copilot 等工具也是類似的兩種模式。)
剛開始建議用聊天的方式,因為每一步都在你手上。熟悉之後再用 Claude Code,它會幫你省下大量複製貼上的時間,但它請求權限時,你要能看懂它想做什麼。
第一步:把需求講清楚
模糊的需求會得到「看起來能跑、但不是你要的」程式。一個好的需求包含四個部分:
- 目標:要做什麼,為什麼。
- 輸入和輸出:資料長什麼樣子,最好附上幾行範例;結果要存成什麼格式。
- 環境:作業系統、Python 版本、可以用哪些套件。
- 限制:哪些事絕對不能做,需要哪些安全機制。
請幫我寫一支 Python 腳本。
目標:把「記帳」資料夾裡每個月的 CSV 檔合併成一個 Excel 檔,方便我看全年花費。
輸入:檔名像 2026-01.csv、2026-02.csv,編碼是 utf-8-sig,欄位是 date,category,item,amount,例如:2026-01-03,餐費,雞腿便當,85
輸出:同一個資料夾裡的「全年記帳.xlsx」,依日期排序。
環境:Windows 11,Python 3.12 以上,可以用 pandas 和 openpyxl。
限制:
- 絕對不要刪除或修改原始的 CSV 檔。
- 資料夾裡沒有 CSV 時,印出提醒並結束,不要報錯。
- 執行完印出合併了幾個檔案、幾筆資料。
- 加上中文註解,我是初學者。
第二步:讀懂程式,找出紅旗
假設 AI(或網路上某篇文章)給了你這段程式:
from pathlib import Path
import pandas as pd
folder = Path("記帳")
frames = []
for f in folder.glob("*.csv"):
frames.append(pd.read_csv(f, encoding="utf-8-sig"))
f.unlink() # 合併後刪除原始檔,保持資料夾整潔
merged = pd.concat(frames)
merged.to_excel(folder / "全年記帳.xlsx", index=False)
它看起來很短、很合理,也真的能跑。但仔細讀,會發現三個問題:
f.unlink()會刪除檔案,而且不會進資源回收筒。更糟的是,它在 Excel 存好之前就刪了,中途出錯,資料就沒了。- 資料夾是空的時候,
pd.concat會因為沒有東西可以合併而報錯。 - 沒有依日期排序,
glob找到的順序也不保證固定。
這就是為什麼「讀懂」是第一關。下面這些寫法,看到時一定要停下來確認:
不代表這些寫法不能用,而是用到時你要知道它在做什麼、作用在哪些檔案上。
看不懂的地方,直接問:
請逐行解釋下面這段程式在做什麼。特別告訴我:它會讀取、建立、修改、刪除或搬移哪些檔案?會不會連上網路、傳送資料?如果我在資料夾是空的、或檔案格式不對的情況下執行,會發生什麼事?
(貼上程式)
修正後的版本大概會像這樣:
from pathlib import Path
import pandas as pd
folder = Path("記帳")
files = sorted(folder.glob("*.csv"))
if not files:
print("找不到任何 CSV 檔,請確認資料夾路徑")
else:
frames = []
for f in files:
frames.append(pd.read_csv(f, encoding="utf-8-sig"))
merged = pd.concat(frames, ignore_index=True).sort_values("date")
out = folder / "全年記帳.xlsx"
merged.to_excel(out, index=False)
print(f"合併了 {len(files)} 個檔案、{len(merged)} 筆資料,存到 {out}")
第三步到第五步:測試、邊界、驗算
讀懂之後,還要實際驗證。完整的驗收流程是這樣:
在測試複本上執行。 把資料夾整個複製一份,或像「讀寫檔案與整理資料夾」那堂一樣,用程式產生假資料。永遠不要第一次就拿真資料跑。
測試邊界情況。 想想「不正常」的情況:
- 資料夾是空的
- 檔名或內容有中文、空格
- 某個 CSV 少了一個欄位,或金額欄有文字
- 輸出檔案已經存在,或正在 Excel 裡開著
- 網路斷線(如果有呼叫 API)
你不用一次想到全部,也可以請 AI 幫你列:「這支腳本還有哪些情況可能出錯?請幫我列出測試清單。」
用小資料手動驗算。 拿兩個只有三四筆的 CSV 測試,用計算機算一次總額,和程式的結果比對。數字對得上,才代表邏輯是對的。
用 Claude Code 時多注意一件事
Claude Code 會直接在你的電腦上動手,它要執行指令或修改檔案前,會先請你確認。這時請像看合約一樣,看清楚它要執行的指令。看到上面紅旗清單裡的動作,或是看不懂的指令,就先拒絕,請它解釋為什麼需要這麼做。
也建議讓它在一個專門的練習資料夾裡工作,不要直接在放重要資料的地方啟動。
用這一堂的方法,完成一支你真正需要的自動化腳本:
- 從第一堂「為什麼 AI 時代還要學程式」寫下的那件重複的事挑一件,或用本堂的「合併每月記帳 CSV」。
- 按照四個部分(目標、輸入輸出、環境、限制)寫出需求,交給 Claude。
- 拿到程式後,先自己讀一遍,圈出所有紅旗,再請 Claude 逐行解釋,對照你的理解。
- 在測試複本上執行,至少測兩種邊界情況,並用小資料手動驗算一次。
- 全部通過後,備份真實資料,再正式使用。如果適合,用上一堂的方法把它排程起來。
做到這裡,你已經不只是「會寫一點 Python」,而是能和 AI 合作、並為結果負責的人了。
讀完了嗎?
標記完成後,單元與專案的進度會自動更新(只存在這台裝置的瀏覽器)。
留言與討論
卡關了、有心得,或發現內容需要更新?都歡迎留言。留言使用 GitHub 帳號登入。