为什么要做项目:把语法变成作品

学了很多语法,怎么判断真的会了?做一个小项目。项目会把变量、条件、循环、函数、文件读写全部串起来,逼着你"想清楚再写",而不是照着教程抄。

今天做的是命令行记账小工具:可以添加收支、查看列表、算余额、存到文件里下次还能读。麻雀虽小,五脏俱全,它拥有真实软件的完整流程。

项目是语法的"考场",也是信心的来源。
本文核心知识点
  • 需求先设计再写码。
  • 函数按功能拆分。
  • 文件数据持久化。
  • 交互命令行菜单。
Python 项目实战配图:蓝色渐变背景上一个打开的蓝色工具箱,箱内整齐摆着小扳手、小螺丝刀和小齿轮,工具箱上方悬浮一个电脑窗口界面,界面有彩色进度条和绿色对勾,右侧一个白色卡通机器人手持指示棒指向窗口的对勾位置
小工具也能走完完整的项目流程。

需求分析:先想清楚做什么

动手前先列需求清单,写清楚功能点:

  • 添加收入/支出(类型、金额、说明);
  • 查看全部记录;
  • 计算当前余额;
  • 退出时保存到文件,下次启动自动加载。

需求越清楚,代码越不容易返工。这个"先列清单再写"的习惯,是专业开发的第一步。

设计结构:函数划分

按功能拆函数:add_record() 加记录、show_records() 显示、get_balance() 算余额、save_data()/load_data() 读写文件。每个函数只做一件事。

def add_record(records, kind, amount, note):
    records.append({"kind": kind, "amount": amount, "note": note})

def get_balance(records):
    total = 0
    for r in records:
        if r["kind"] == "income":
            total += r["amount"]
        else:
            total -= r["amount"]
    return total

数据用"字典列表"组织:每条记录一个字典,所有记录一个列表,结构清晰又好遍历。

数据存储:文件读写

内存里的数据一关程序就没了,要存到文件里。用 open() 配合 json 模块,把列表转成 JSON 文本保存,读的时候再转回来。

import json

def save_data(records, path="data.json"):
    with open(path, "w", encoding="utf-8") as f:
        json.dump(records, f, ensure_ascii=False)

def load_data(path="data.json"):
    try:
        with open(path, "r", encoding="utf-8") as f:
            return json.load(f)
    except FileNotFoundError:
        return []

try/except 处理"文件还不存在"的情况,返回空列表——这是真实程序里最常见的防御写法。

主循环:命令行交互

主程序用一个 while 循环做菜单:打印选项、读用户输入、按选择调用对应函数。

while True:
    print("1 添加收入  2 添加支出  3 查看  4 余额  5 退出")
    choice = input("请选择:")
    if choice == "5":
        save_data(records)
        break
    # 其他分支调用对应函数

这个"菜单循环"是命令行工具的通用骨架:改改菜单项,就能变成单词本、待办清单、题库刷题器。