news 2026/3/12 3:09:19

新手进阶Python:打造个人记账小工具,轻松管理收支

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
新手进阶Python:打造个人记账小工具,轻松管理收支

大家好!我是CSDN的Python新手博主~ 上一篇分享了「文件整理小工具」,很多小伙伴说跟着实操后收获满满,这次继续带来新手友好的实战项目——「个人记账小工具」!

日常记账总是记了就忘?Excel表格整理太麻烦?这个工具能帮你快速记录收支、查询明细、统计月度收支,全程用基础Python语法实现,适合刚学完文件操作的新手巩固知识,同时解决实际需求~

一、本次学习目标

  1. 掌握Python文件读写的核心用法(open()函数、读写模式)
  2. 学会用字符串格式化处理数据
  3. 理解循环、条件判断在实战中的应用
  4. 完成一个“能存、能查、能统计”的完整小工具

二、工具核心功能

  1. 记录收支:输入日期、金额、用途、类型(收入/支出),自动保存到文件
  2. 查看明细:读取文件中的所有记账记录,格式化输出
  3. 月度统计:输入年份和月份,自动计算该月总收入、总支出、结余

三、实战:一步步实现记账工具

1. 核心思路

用文本文件(account_book.txt)存储记账数据,每条记录占一行,字段用逗号分隔(如:2024-05-20,100,早餐,支出)。通过函数分别实现“记录”“查询”“统计”功能,最后用菜单让用户选择操作。

2. 完整代码(可直接复制运行)

importos# 定义记账文件路径ACCOUNT_FILE="account_book.txt"definit_file():"""初始化记账文件,如果文件不存在则创建"""ifnotos.path.exists(ACCOUNT_FILE):withopen(ACCOUNT_FILE,"w",encoding="utf-8")asf:# 写入表头(可选,方便用户直接打开文件查看)f.write("日期,金额,用途,类型\n")defadd_record():"""添加收支记录"""# 获取用户输入date=input("请输入日期(格式:YYYY-MM-DD,如2024-05-20):")amount=input("请输入金额(数字,如100、59.9):")purpose=input("请输入用途(如早餐、工资):")type_=input("请输入类型(收入/支出):")# 简单数据验证(避免输入为空)ifnotall([date,amount,purpose,type_]):print("错误:所有字段不能为空!")returniftype_notin["收入","支出"]:print("错误:类型只能是'收入'或'支出'!")return# 将记录写入文件(追加模式)withopen(ACCOUNT_FILE,"a",encoding="utf-8")asf:record=f"{date},{amount},{purpose},{type_}\n"f.write(record)print("记录添加成功!")defview_records():"""查看所有收支明细"""ifnotos.path.exists(ACCOUNT_FILE)oros.path.getsize(ACCOUNT_FILE)==0:print("暂无记账记录!")returnprint("\n=== 所有收支明细 ===")withopen(ACCOUNT_FILE,"r",encoding="utf-8")asf:# 跳过表头,读取后续内容next(f)forlineinf:line=line.strip()# 去除换行符和空格ifnotline:continuedate,amount,purpose,type_=line.split(",")print(f"日期:{date}| 金额:{amount}元 | 用途:{purpose}| 类型:{type_}")print("===================\n")defmonthly_statistics():"""月度收支统计"""ifnotos.path.exists(ACCOUNT_FILE)oros.path.getsize(ACCOUNT_FILE)==0:print("暂无记账记录!")returnyear_month=input("请输入要统计的年月(格式:YYYY-MM,如2024-05):")total_income=0.0total_expense=0.0withopen(ACCOUNT_FILE,"r",encoding="utf-8")asf:next(f)# 跳过表头forlineinf:line=line.strip()ifnotline:continuedate,amount,purpose,type_=line.split(",")# 判断日期是否匹配目标年月ifdate.startswith(year_month):amount=float(amount)iftype_=="收入":total_income+=amountelse:total_expense+=amount surplus=total_income-total_expenseprint(f"\n==={year_month}收支统计 ===")print(f"总收入:{total_income:.2f}元")print(f"总支出:{total_expense:.2f}元")print(f"月结余:{surplus:.2f}元")print("=======================\n")defmain():"""主菜单"""init_file()# 初始化文件whileTrue:print("===== Python 个人记账工具 =====")print("1. 添加收支记录")print("2. 查看所有明细")print("3. 月度收支统计")print("4. 退出工具")choice=input("请输入操作编号(1-4):")ifchoice=="1":add_record()elifchoice=="2":view_records()elifchoice=="3":monthly_statistics()elifchoice=="4":print("感谢使用,再见!")breakelse:print("输入错误,请选择1-4之间的编号!")if__name__=="__main__":main()

3. 关键代码拆解(新手必看)

(1)文件初始化与读写模式
  • init_file()函数:启动工具时自动检查是否存在记账文件,不存在则创建,避免后续读写报错。
  • open()函数的3种核心模式:
    • "w":写入模式(覆盖原有内容,适合创建文件);
    • "a":追加模式(在文件末尾添加内容,适合记录数据);
    • "r":读取模式(读取文件内容,不修改数据)。
  • with open(...) as f:自动管理文件关闭,避免新手忘记写f.close()导致的资源泄漏。
(2)数据验证与格式化
  • all([date, amount, purpose, type_])检查所有输入是否为空,避免无效数据;
  • type_ not in ["收入", "支出"]限制类型输入,保证数据一致性;
  • f-string格式化输出(如f"日期:{date} | 金额:{amount}元"),让结果更易读。
(3)月度统计核心逻辑
  • date.startswith(year_month):判断记录的日期是否以目标年月开头(如2024-05-20匹配2024-05);
  • float(amount)将字符串格式的金额转为数字,才能进行加减计算;
  • 保留2位小数(:.2f),让金额显示更规范(如59.9显示为59.90)。

四、运行效果演示

  1. 启动工具后,会显示主菜单,输入1添加记录:
===== Python 个人记账工具 ===== 1. 添加收支记录 2. 查看所有明细 3. 月度收支统计 4. 退出工具 请输入操作编号(1-4):1 请输入日期(格式:YYYY-MM-DD,如2024-05-20):2024-05-20 请输入金额(数字,如100、59.9):30 请输入用途(如早餐、工资):早餐 请输入类型(收入/支出):支出 记录添加成功!
  1. 输入2查看明细:
=== 所有收支明细 === 日期:2024-05-20 | 金额:30元 | 用途:早餐 | 类型:支出 日期:2024-05-20 | 金额:5000元 | 用途:工资 | 类型:收入 ===================
  1. 输入3统计月度收支:
=== 2024-05 收支统计 === 总收入:5000.00元 总支出:30.00元 月结余:4970.00元 =======================

五、新手避坑小贴士

  1. 编码问题:打开文件时一定要指定encoding="utf-8",否则中文内容可能出现乱码。
  2. 数据格式:输入日期和年月时,严格按照提示格式(如YYYY-MM-DD),否则统计功能会失效。
  3. 金额输入:金额必须是数字(如10059.9),如果输入文字(如一百),会报错,后续可以学习try-except语句处理这种异常。
  4. 文件路径:记账文件account_book.txt会保存在脚本所在的文件夹,找不到的话可以检查脚本的存放路径。

六、总结与后续规划

这篇文章通过“个人记账工具”,带大家巩固了Python文件读写、字符串处理、循环判断等核心基础知识点。新手学习的关键还是“边学边练”,把知识点融入到实际项目中,才能记得更牢。

接下来的系列文章,我会继续分享更实用的Python新手项目,比如:

  • 批量重命名文件工具
  • 简单的爬虫(获取网页数据)
  • 自动化办公(操作Excel、发送邮件)

如果这篇文章对你有帮助,欢迎点赞收藏+关注,也可以在评论区分享你的使用体验或遇到的问题,我们一起交流进步!@TOC

欢迎使用Markdown编辑器

你好! 这是你第一次使用Markdown编辑器所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。

新的改变

我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:

  1. 全新的界面设计,将会带来全新的写作体验;
  2. 在创作中心设置你喜爱的代码高亮样式,Markdown将代码片显示选择的高亮样式进行展示;
  3. 增加了图片拖拽功能,你可以将本地的图片直接拖拽到编辑区域直接展示;
  4. 全新的KaTeX数学公式语法;
  5. 增加了支持甘特图的mermaid语法1功能;
  6. 增加了多屏幕编辑Markdown文章功能;
  7. 增加了焦点写作模式、预览模式、简洁写作模式、左右区域同步滚轮设置等功能,功能按钮位于编辑区域与预览区域中间;
  8. 增加了检查列表功能。

功能快捷键

撤销:Ctrl/Command+Z
重做:Ctrl/Command+Y
加粗:Ctrl/Command+B
斜体:Ctrl/Command+I
标题:Ctrl/Command+Shift+H
无序列表:Ctrl/Command+Shift+U
有序列表:Ctrl/Command+Shift+O
检查列表:Ctrl/Command+Shift+C
插入代码:Ctrl/Command+Shift+K
插入链接:Ctrl/Command+Shift+L
插入图片:Ctrl/Command+Shift+G
查找:Ctrl/Command+F
替换:Ctrl/Command+G

合理的创建标题,有助于目录的生成

直接输入1次#,并按下space后,将生成1级标题。
输入2次#,并按下space后,将生成2级标题。
以此类推,我们支持6级标题。有助于使用TOC语法后生成一个完美的目录。

如何改变文本的样式

强调文本强调文本

加粗文本加粗文本

标记文本

删除文本

引用文本

H2O is是液体。

210运算结果是 1024.

插入

链接与图片

链接: link.

图片:

带尺寸的图片:

居中的图片:

居中并且带尺寸的图片:

当然,我们为了让用户更加便捷,我们增加了图片拖拽功能。

如何插入一段漂亮的代码片

去博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的代码片.

// An highlighted blockvarfoo='bar';

生成一个适合你的列表

  • 项目
    • 项目
      • 项目
  1. 项目1
  2. 项目2
  3. 项目3
  • 计划任务
  • 完成任务

创建一个表格

一个简单的表格是这么创建的:

项目Value
电脑$1600
手机$12
导管$1

设定内容居中、居左、居右

使用:---------:居中
使用:----------居左
使用----------:居右

第一列第二列第三列
第一列文本居中第二列文本居右第三列文本居左

SmartyPants

SmartyPants将ASCII标点字符转换为“智能”印刷标点HTML实体。例如:

TYPEASCIIHTML
Single backticks'Isn't this fun?'‘Isn’t this fun?’
Quotes"Isn't this fun?"“Isn’t this fun?”
Dashes-- is en-dash, --- is em-dash– is en-dash, — is em-dash

创建一个自定义列表

Markdown
Text-to-HTMLconversion tool
Authors
John
Luke

如何创建一个注脚

一个具有注脚的文本。2

注释也是必不可少的

Markdown将文本转换为HTML

KaTeX数学公式

您可以使用渲染LaTeX数学表达式 KaTeX:

Gamma公式展示Γ ( n ) = ( n − 1 ) ! ∀ n ∈ N \Gamma(n) = (n-1)!\quad\forall n\in\mathbb NΓ(n)=(n1)!nN是通过欧拉积分

Γ ( z ) = ∫ 0 ∞ t z − 1 e − t d t . \Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,.Γ(z)=0tz1etdt.

你可以找到更多关于的信息LaTeX数学表达式here.

新的甘特图功能,丰富你的文章

2014-01-072014-01-092014-01-112014-01-132014-01-152014-01-172014-01-192014-01-21已完成进行中计划一计划二现有任务Adding GANTT diagram functionality to mermaid
  • 关于甘特图语法,参考 这儿,

UML 图表

可以使用UML图表进行渲染。 Mermaid. 例如下面产生的一个序列图:

张三李四王五你好!李四, 最近怎么样?你最近怎么样,王五?我很好,谢谢!我很好,谢谢!李四想了很长时间, 文字太长了不适合放在一行.打量着王五...很好... 王五, 你怎么样?张三李四王五

这将产生一个流程图。:

链接
长方形
圆角长方形
菱形
  • 关于Mermaid语法,参考 这儿,

FLowchart流程图

我们依旧会支持flowchart的流程图:

Created with Raphaël 2.3.0开始我的操作确认?结束yesno
  • 关于Flowchart流程图语法,参考 这儿.

导出与导入

导出

如果你想尝试使用此编辑器, 你可以在此篇文章任意编辑。当你完成了一篇文章的写作, 在上方工具栏找到文章导出,生成一个.md文件或者.html文件进行本地保存。

导入

如果你想加载一篇你写过的.md文件,在上方工具栏可以选择导入功能进行对应扩展名的文件导入,
继续你的创作。


  1. mermaid语法说明 ↩︎

  2. 注脚的解释 ↩︎

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/4 11:48:38

Beyond Compare 5授权解决方案:企业级文件对比工具的专业部署指南

Beyond Compare 5授权解决方案:企业级文件对比工具的专业部署指南 【免费下载链接】BCompare_Keygen Keygen for BCompare 5 项目地址: https://gitcode.com/gh_mirrors/bc/BCompare_Keygen 在软件开发、数据分析和系统运维领域,高效的文件对比工…

作者头像 李华
网站建设 2026/3/9 20:17:00

基于FLUX.1-dev的AI艺术创作平台搭建全记录

基于FLUX.1-dev的AI艺术创作平台搭建全记录 在数字艺术创作的前沿,我们正经历一场由生成式AI驱动的范式变革。过去几年里,从Stable Diffusion到DALLE系列,文生图模型不断刷新人们对“机器创造力”的认知边界。然而,真正能将创意意…

作者头像 李华
网站建设 2026/3/7 6:15:02

NCM格式转换终极指南:3步解锁网易云音乐加密文件

还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump工具正是你需要的解决方案!这款轻量级工具能够快速将NCM加密文件转换为通用音频格式,让你的音乐库真正实现跨平台自由流通🎵 【免费下载链接】ncmdump …

作者头像 李华
网站建设 2026/3/11 3:24:22

力扣300

/* dp[n]:以第n个元素结尾的最大子序列的值 所以说dp[n]应该与前面的所有dp[n-1]--dp[0]都与有关,从里面选出一个最大的dp,然后 加上n的本身(如果nums[n]大的话) */ class Solution { public:int lengthOfLIS(vector&l…

作者头像 李华
网站建设 2026/3/4 7:05:32

3.6B活跃参数的秘密:解密GPT-OSS-20B的高效推理机制

3.6B活跃参数的秘密:解密GPT-OSS-20B的高效推理机制 在一台仅配备16GB内存的普通笔记本上,运行一个总参数达210亿的语言模型——这听起来像是天方夜谭。然而,GPT-OSS-20B 正是这样一款打破常规的开源模型,它不仅做到了&#xff0c…

作者头像 李华
网站建设 2026/3/11 6:26:12

收藏必备!智能体工程:解决大模型“上线秒变智障“的终极指南

智能体工程是通过"构建、测试、上线、观察、优化、重复"的循环迭代,将不稳定的大模型系统打磨成生产级可靠应用的方法论。它需要产品思维、工程能力和数据科学三种能力配合,与传统软件开发不同之处在于强调上线是为了学习而非完美。成功的团队…

作者头像 李华