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

個人記帳小幫手

用 Python 寫一個在終端機裡執行的記帳工具:記下每筆花費、存進 CSV 檔,再自動算出每月和各分類的統計。過程中練習請 AI 解釋程式和除錯。

入門約 8 小時5 個里程碑

開始前,建議先完成

依建議順序排列。還沒全部完成也可以開始,遇到不會的再回去補。

  1. 01Python 第一步:從零寫出第一支程式
  2. 02資料與自動化:讓 Python 幫你做雜事
  3. 04AI 寫程式入門:和 AI 一起寫程式

里程碑

  1. 1

    規劃功能與資料格式

    寫下三到四個功能和 CSV 的欄位,完成標準是一份你看得懂的簡短規格。

  2. 2

    記下第一筆帳

    程式能詢問日期、分類、金額、備註,並把資料加到 CSV 檔最後一列。

  3. 3

    查看最近紀錄與本月統計

    能列出最近十筆,並算出本月總花費與各分類小計,數字和手算一致。

  4. 4

    加上選單與防呆

    用選單切換功能,輸入錯誤時不會當掉,而是提示重新輸入。

  5. 5

    請 AI 審查並整理程式

    請 AI 指出可改進的地方,你理解後再修改,最後程式仍然能正常記帳。

為什麼做這個專案

記帳是很好的第一個專案:需求你自己最清楚,做出來每天都用得到,而且剛好會用到變數、條件、迴圈、函式、檔案這些基本功。

更重要的是,你會第一次體驗「和 AI 一起寫程式」的節奏:你決定要做什麼,AI 幫你寫和解釋,你負責測試和驗收。

記帳小幫手的結構:終端機選單呼叫三個函式,資料寫入與讀取同一個 expenses.csv 檔

整個程式只有三塊:選單、功能函式、資料檔。

開始前的準備

  • 電腦已經安裝 Python 和 VS Code(「Python 第一步」第一堂)
  • 會寫基本的函式和迴圈,看得懂串列與字典
  • 準備一個 AI 助理,例如 Claude,用來問問題和除錯
  • 建一個新資料夾,例如 expense-tracker

卡關是正常的。這個專案設計成每個里程碑都能單獨完成,做完一個就休息一下也沒關係。

實作指南

里程碑 1:規劃功能與資料格式

先別急著寫程式。在記事本裡寫下你要什麼:

功能:
1. 記一筆帳(日期、分類、金額、備註)
2. 看最近 10 筆
3. 本月統計:總額、各分類小計
資料檔:expenses.csv
欄位:date,category,amount,note
分類:餐飲、交通、日用品、娛樂、其他

把這份規格貼給 AI,請它挑毛病:

請 AI 檢查規格

我是程式初學者,想用 Python 寫一個終端機記帳工具,規格如下。請告訴我有沒有漏掉什麼重要的情況,例如輸入錯誤怎麼辦。先不要寫程式。

里程碑 2:記下第一筆帳

Python 內建的 csv 模組就能處理。核心大概長這樣:

import csv
from datetime import date

def add_expense():
    today = date.today().isoformat()
    category = input("分類:")
    amount = int(input("金額:"))
    note = input("備註:")
    with open("expenses.csv", "a", newline="", encoding="utf-8") as f:
        csv.writer(f).writerow([today, category, amount, note])
    print("已記錄!")

如果有哪一行看不懂,整段貼給 AI,請它「一行一行用白話解釋」。執行後打開 expenses.csv 看看,資料真的寫進去了,這個里程碑就完成了。

里程碑 3:查看最近紀錄與本月統計

這裡可以用「資料與自動化」學到的 pandas,幾行就能做分類加總:

import pandas as pd

df = pd.read_csv("expenses.csv", names=["date", "category", "amount", "note"])
this_month = df[df["date"].str.startswith("2026-11")]
print(this_month.groupby("category")["amount"].sum())

範例裡月份是寫死的。試著請 AI 幫你改成自動抓「這個月」,並問它為什麼這樣改。

里程碑 4:加上選單與防呆

用 while True 迴圈做選單,依照輸入呼叫不同函式。接著故意亂輸入:金額打「一百」、選單打 9,看看程式會不會當掉。

請 AI 幫你防呆

當使用者在金額輸入不是數字的內容時,我的程式會出現 ValueError 然後結束。請教我用 try 和 except 處理,讓它提示重新輸入。請解釋每一行在做什麼。

里程碑 5:請 AI 審查並整理程式

把完整程式貼給 AI,請它當程式審查者:

請 AI 審查

這是我寫的記帳程式。請用初學者聽得懂的方式,列出三個最值得改進的地方,並說明理由。先不要直接改寫整支程式。

一次只改一個地方,改完就執行一次,確認記帳功能還正常。

延伸挑戰

  • 加一個「每月預算」,超過時顯示提醒
  • 用 matplotlib 畫出各分類的圓餅圖
  • 每月 1 號自動產生上個月的報表(「資料與自動化」的排程單元)
  • 讓分類可以從檔案讀取,不用寫死在程式裡
完成標準
  • 能用選單記帳、看最近紀錄、看本月統計
  • 資料存在 expenses.csv,關掉程式再打開,舊資料還在
  • 輸入錯誤時不會當掉
  • 本月統計和你手算的結果一致
  • 你能向別人解釋每個函式在做什麼

做完了?分享你的作品!

到交流區貼上作品連結和心得,你的經驗會幫到下一個人。

前往交流區

專案討論

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

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