所有入門單元免費開放 · 課程內容持續更新中

讓 AI 寫腳本,你負責驗收

學會把需求講清楚交給 Claude 或 Claude Code,再用一份五步驟的驗收清單,確認 AI 寫的自動化腳本真的正確、安全。

第 2.6 堂約 15 分鐘

這一堂,是整個單元的總複習

這個單元你學了檔案、pandas、JSON、API 和排程。說實話,這些程式現在 AI 都能在幾秒內寫出來。那你學這些是為了什麼?

答案是:為了當一個合格的驗收者。AI 寫得快,但它不知道你的資料夾裡哪些檔案很重要,也不會替後果負責。你學過的每一堂課,都讓你更有能力判斷「這段程式可以放心執行嗎」。

兩種讓 AI 寫程式的方式

Claude(聊天) Claude Code(程式代理)
怎麼運作 你描述需求,它回覆程式碼,你自己複製、存檔、執行 它直接在你的電腦上讀檔案、寫程式、執行指令
適合 單一支小腳本、學習、問問題 有好幾個檔案的專案、需要反覆執行和修改
你的把關點 執行前讀過程式 每次它要執行指令或修改檔案時,會先請你同意,看清楚再按

(ChatGPT、Gemini、Cursor、GitHub Copilot 等工具也是類似的兩種模式。)

剛開始建議用聊天的方式,因為每一步都在你手上。熟悉之後再用 Claude Code,它會幫你省下大量複製貼上的時間,但它請求權限時,你要能看懂它想做什麼。

第一步:把需求講清楚

模糊的需求會得到「看起來能跑、但不是你要的」程式。一個好的需求包含四個部分:

  1. 目標:要做什麼,為什麼。
  2. 輸入和輸出:資料長什麼樣子,最好附上幾行範例;結果要存成什麼格式。
  3. 環境:作業系統、Python 版本、可以用哪些套件。
  4. 限制:哪些事絕對不能做,需要哪些安全機制。
可以這樣問 Claude

請幫我寫一支 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 找到的順序也不保證固定。

這就是為什麼「讀懂」是第一關。下面這些寫法,看到時一定要停下來確認:

紅旗清單:會刪除檔案的 unlink、remove、rmtree,會覆蓋檔案的寫入模式 w 和 to_excel,會搬移改名的 rename、move,會對外傳送資料的 requests.post,以及會執行系統指令的 subprocess 和 os.system

不代表這些寫法不能用,而是用到時你要知道它在做什麼、作用在哪些檔案上。

看不懂的地方,直接問:

可以這樣問 Claude

請逐行解釋下面這段程式在做什麼。特別告訴我:它會讀取、建立、修改、刪除或搬移哪些檔案?會不會連上網路、傳送資料?如果我在資料夾是空的、或檔案格式不對的情況下執行,會發生什麼事?

(貼上程式)

修正後的版本大概會像這樣:

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 會直接在你的電腦上動手,它要執行指令或修改檔案前,會先請你確認。這時請像看合約一樣,看清楚它要執行的指令。看到上面紅旗清單裡的動作,或是看不懂的指令,就先拒絕,請它解釋為什麼需要這麼做。

也建議讓它在一個專門的練習資料夾裡工作,不要直接在放重要資料的地方啟動。

行動練習

用這一堂的方法,完成一支你真正需要的自動化腳本:

  1. 從第一堂「為什麼 AI 時代還要學程式」寫下的那件重複的事挑一件,或用本堂的「合併每月記帳 CSV」。
  2. 按照四個部分(目標、輸入輸出、環境、限制)寫出需求,交給 Claude。
  3. 拿到程式後,先自己讀一遍,圈出所有紅旗,再請 Claude 逐行解釋,對照你的理解。
  4. 在測試複本上執行,至少測兩種邊界情況,並用小資料手動驗算一次。
  5. 全部通過後,備份真實資料,再正式使用。如果適合,用上一堂的方法把它排程起來。

做到這裡,你已經不只是「會寫一點 Python」,而是能和 AI 合作、並為結果負責的人了。

讀完了嗎?

標記完成後,單元與專案的進度會自動更新(只存在這台裝置的瀏覽器)。

卡住了?讓 AI 當你的家教複製這段提問範本,貼到 Claude 或其他 AI 工具,再補上你卡住的地方。

留言與討論

卡關了、有心得,或發現內容需要更新?都歡迎留言。留言使用 GitHub 帳號登入。

留言區即將開放。現在可以先到 GitHub 討論區 發問,或看看 交流頁 的其他管道。