🐸 青蛙编程网
首页 / 开发工具 / VSCode / 7. 综合练习

综合练习:一个项目的完整工作流

这是什么:用 VSCode 从零做一个真实的小项目——命令行记账本(Python):新建项目、写代码、调试、格式化、配 git,走完「程序员的日常一天」。

为什么用:单点技能(快捷键、断点、插件)学完了,串起来才是工作流。以后你学Python 进阶、Flask、前端,每天就是在这条流水线上重复。

如何用:全程在 VSCode 里完成,别开系统记事本和外部终端——每一步都用前六章的招式。

任务:命令行记账本

一个运行在终端的小程序:输入花销,自动记账并打印汇总。先看最终效果:

(.venv) PS E:\ledger> python ledger.py 加 25 午饭
已记录:午饭 25.0 元
(.venv) PS E:\ledger> python ledger.py 加 120 打车
已记录:打车 120.0 元
(.venv) PS E:\ledger> python ledger.py 汇总
今日共 2 笔,合计 145.0 元

流程八步

① 建项目

新建文件夹 ledger → VSCode 打开文件夹 → 按上一栈的方法建 venv(终端里 python -m venv .venv)→ Ctrl+Shift+P → Python: Select Interpreter 选它 → 装 Python 插件。状态栏出现版本号才算就绪。

② 写代码

文件树新建 ledger.py,输入以下代码(感受自动补全帮你打字):

import sys

records: list[tuple[str, float]] = []      # (用途, 金额)


def add(reason: str, amount: float) -> str:
    records.append((reason, amount))
    return f"已记录:{reason} {amount} 元"


def summary() -> str:
    total = sum(a for _, a in records)
    return f"今日共 {len(records)} 笔,合计 {total} 元"


def main() -> None:
    cmd = sys.argv[1]
    if cmd == "加":
        print(add(sys.argv[2], float(sys.argv[3])))
    elif cmd == "汇总":
        print(summary())
    else:
        print("用法:python ledger.py 加 <金额> <用途> 或 汇总")


if __name__ == "__main__":
    main()

③ 跑起来

集成终端(Ctrl+`)里:

python ledger.py 加 25 午饭
python ledger.py 汇总

④ 调试一个 bug

把 汇总 写成 总和 再跑——走到 else 打印用法。别肉眼查,用调试器:在 main() 的 cmd = sys.argv[1] 行打断点,F5 启动(调试配置里加参数 "args": ["总和"],或临时改成 sys.argv = ["ledger.py", "总和"])——变量区里 cmd 的值一眼可见,定位即修复。

⑤ 格式化

Ctrl+, 开启 Format On Save(第 4 章),Ctrl+S 保存,代码自动理顺。

⑥ 配 git

左侧活动栏点源代码管理图标 → 初始化仓库 → 文件旁点 + 暂存 → 写提交信息 first commit → 提交。左下角状态栏出现分支名——Git 教程的活,VSCode 全程代劳图形界面。

⑦ 提交规范

以后每次改动:源代码管理面板会列出改了哪些文件的哪几行(点文件可对比),确认后写清楚「改了什么」再提交——commit message 别写「改了一点」。

⑧ 扩展挑战(选做)

  • 加 删 命令:python ledger.py 删 1 移除第 1 笔(试试用调试器验证下标对不对)
  • 数据落盘:用 json 模块把 records 存进 ledger.json,重启不丢(呼应 JSON 教程)
  • 接上 Flask 把它变成 Web 接口

逐段中文精讲(核心代码)

  • records 列表:(用途, 金额) 元组的列表当内存账本;list[tuple[str, float]] 的类型标注让编辑器补全和检查全程在线。
  • add() / summary():两个函数各管一件事,f"..." 格式化输出(Python 基础的模板字符串同款)。
  • sys.argv:命令行参数列表——python ledger.py 加 25 午饭 里,argv = ["ledger.py", "加", "25", "午饭"],第 0 个是文件名本身。
  • if __name__ == "__main__"::直接运行本文件才执行 main();被别的文件 import 时不执行——Python 的标准入口写法,现在照抄,面向对象之后自然懂。

学完这章去哪

你已经拥有一条完整的工作流:VSCode(写)→ 终端(跑)→ 调试器(查)→ git(存)。接下来:

  1. 回去把 Python 基础或前端三件套的练习全部搬进这套流程
  2. 要部署上线?去 Linux 教程学服务器操作
  3. 团队协作前,把 Git 教程的分支与远程补齐

上一章:终端与调试 · 配套:Git · venv 🐸

📥 下载本章代码

ZIP 内含本章全部代码文件与说明,解压即用,与教程内容同步生成。