Python项目21:一个简单的记账系统(收入+支出+查询)

------------★Python练手项目源码★------------

Python项目源码20:银行管理系统(开户、查询、取款、存款、转账、锁定、解锁、退出)

Python项目19:学员信息管理系统(简易版)

Python项目18:使用Pillow模块,随机生成4位数的图片验证码

Python项目17:教你制作一副帅气的春联

Python项目16:教你使用pillow把女神的图片,添加表白文字。

Python项目15:Pygame制作,新年动态烟花

Python项目14:使用random,模拟扑克牌发牌+猜单词游戏

Python项目12:破解zip压缩包的密码

Python项目10:使用Tkinter批量新建文件夹

Python项目09:使用filestools模块,批量添加图片水印

Python项目08:用pywin32在聊天窗口发送QQ好友/群消息

Python小项目07:pywin32实现自动写文字到记事本

Python小项目:05模拟微信发送好友/群消息

Python小项目05:使用pywifi模块,暴力破解WIFI密码 !!亲测有效

Python经典小游戏02:字母数字代码雨

这是一个简单的记账程序,可以记录收入和支出,以及查询收支记录。程序运行时会首先检查数据文件account.data是否存在,如果不存在则创建并初始化数据。然后进入一个循环,等待用户输入并执行相应的功能,直到用户选择退出。注意:程序使用了pickle模块来序列化和反序列化数据,以便将数据保存在文件中。数据文件是一个二进制文件,包含了一个收支记录的列表,每个记录是一个包含日期、支出、收入、余额和说明的列表。程序的主要功能包括:
cost函数:记录支出,用户输入支出金额和说明,然后将记录追加到文件中。
save函数:记录收入,用户输入收入金额和说明,然后将记录追加到文件中。
query函数:查询收支记录,打印出所有记录。
keep_accounts函数:主程序,根据用户输入执行相应的功能,包括开销、收入、查询和退出。
在这里插入图片描述

# -*- coding:utf-8 -*-
# @Author : 小红牛
# 微信公众号:WdPython
import pickle
import time
import os# 1.记录开销
def cost(fname):'用于记录花费'cost_time = time.strftime('%Y-%m-%d')try:  # 异常处理机制cost_deposit = int(input('花销金额:'))cost_mark = input('花销说明:')except ValueError:print('无效的金额')return  # 函数的return类似于循环的break,return提前结束函数。except (KeyboardInterrupt, EOFError):print('\nbye-bye')exit(1)# 在文件中取出所有的收支记录with open(fname, 'rb') as f:records = pickle.load(f)# 计算最新余额balance = records[-1][-2] - cost_deposit# 构建最新一笔收入record = [cost_time, 0, cost_deposit, balance, cost_mark]# 将收入追加到收支列表中records.append(record)# 将最新收支情况写入文件with open(fname, 'wb') as fobj:pickle.dump(records, fobj)# 2.收入
def save(fname):save_time = time.strftime('%Y-%m-%d')try:save_deposit = int(input('收入金额:'))save_mark = input('收入说明:')except ValueError:print('无效的金额')returnexcept (KeyboardInterrupt, EOFError):print('bye-bye')exit(1)with open(fname, 'rb') as fobj:records = pickle.load(fobj)balance = records[-1][-2] + save_depositrecord = [save_time, save_deposit, 0, balance, save_mark]records.append(record)with open(fname, 'wb') as fobj:pickle.dump(records, fobj)# 3.查询
def query(fname):# 用于查账# 打印表头标题print(f'{"date":<15}{"save":<8}{"cost":<8}{"balance":<12}{"mark":<50}')with open(fname, 'rb') as f:records = pickle.load(f)for date, cost, save, balance, mark in records:print(f'{date:<15}{cost:<8}{save:<8}{balance:<12}{mark:<50}')# 4.主程序
def keep_accounts():funcs = {'0': cost, '1': save, '2': query}prompt = '''*****************
(0)开销
(1)收入
(2)查询
(3)退出
*****************
请选择(0/1/2/3):'''fname = 'account.data'if not os.path.exists(fname):init_data = [[time.strftime('%Y-%m-%d'), 0, 0, 0, '默认']]with open(fname, 'wb') as f:pickle.dump(init_data, f)while True:try:choice = input(prompt).strip()except(KeyboardInterrupt, EOFError):choice = '3'if choice not in ['0', '1', '2', '3']:print('输入的数字无效,请重试')continueif choice == '3':print('已经退出,欢迎再次使用!')break# 执行相应的功能funcs[choice](fname)keep_accounts()

完毕!!感谢您的收看

----------★★历史博文集合★★----------

我的零基础Python教程,Python入门篇 进阶篇 视频教程 Py安装py项目 Python模块 Python爬虫 Json Xpath 正则表达式 Selenium Etree CssGui程序开发 Tkinter Pyqt5 列表元组字典数据可视化 matplotlib 词云图 Pyecharts 海龟画图 Pandas Bug处理 电脑小知识office自动化办公 编程工具 NumPy Pygame

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/597118.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Nacos集群监控搭建

Nacos集群监控搭建 结合prometheus和grafana监控Nacos Nacos 0.8.0版本完善了监控系统&#xff0c;支持通过暴露metrics数据接入第三方监控系统监控Nacos运行状态。 搭建Nacos集群暴露metrics数据 按照之前的集群搭建文档&#xff0c;搭建一个nacos集群。配置application.p…

分享多张自己绘制的 JavaScript 原型图

svg 图片自取 先来个最经典的 然后是对象与 Object 接着是函数与 Function。图中的 [[Prototype]] 指的就是原型对象 Function 和 Object 之间的关系也不能少。 这两个对象 Object 和 Function 是由 v8 自己创建的&#xff0c;理由是打印这两个对象时&#xff0c;终端输出 ƒ…

Django複習總結

①Django是框架。那麼什麼是框架&#xff1a; 框架很像是一個骨架&#xff0c;帶有很多默認器官的骨架。我們可以根據需要改寫、複寫這些器官。 從而實現自己所需要的功能。 ②Django是MVC模型\MVT模型&#xff1a; MVC模型&#xff1a;M&#xff1a;models模型層 V&#…

C语言 | Leetcode C语言题解之第12题整数转罗马数字

题目&#xff1a; 题解&#xff1a; const char* thousands[] {"", "M", "MM", "MMM"}; const char* hundreds[] {"", "C", "CC", "CCC", "CD", "D", "DC"…

ubuntu系统安装k8s1.28精简详细步骤

目录 一、规划二、环境准备2.1 配置apt仓库配置系统基本软件仓库配置k8s软件仓库安装常用软件包 2.2 修改静态ip、ntp时间同步、主机名、hosts文件、主机免密2.3 内核配置2.4 关闭防火墙、selinux、swap2.5 安装软件安装docker安装containerd安装k8s软件包 三、安装配置k8s3.1 …

WEBAPIS知识案例总结(续)

其他事件 页面加载事件 加载外部资源&#xff08;如图片&#xff0c;外联css和js等&#xff09;加载完毕时触发的事件有时候需要等页面资源全部处理完之后做一些事情老代码喜欢把script写在head中&#xff0c;这时候直接找dom元素找不到事件名&#xff1a;load监听页面所有资…

Qt环形颜色选择控件, 圆环颜色选择器

参考文章Qt编写自定义控件&#xff1a;环形颜色选择控件_qconicalgradient圆环渐变-CSDN博客 感谢作责提供的方法&#xff0c;下面程序的基础思路同参考文章。 为了更方便使用&#xff0c;这个选择器是基于64色表的&#xff0c;会显示选中的索引和色值。颜色选择时计算方式也…

[护网必备]知攻善防实验室蓝队应急响应工具箱v2024.4

前言 蓝队工具箱是为打造一款专业级应急响应的集成多种工具的工具集&#xff0c;由真实应急响应环境所用到的工具进行总结打包而来&#xff0c;由 ChinaRan404,W 啥都学,清辉等开发者编写.把项目现场中所用到的工具连同环境一同打包&#xff0c;并实现“可移植性”“兼容性”“…

【Linux-运维】查看操作系统的指定端口占用情况确定端口是哪个服务占用

不同的查看端口占用的方法&#xff0c;应用场景有所不同 一、查询某个端口是否被占用&#xff1f;lsof -i:端口号lsof -i:协议 查看某个协议的占用情况netstat -tlnp|grep 端口号ss -tlnp|grep 端口号fuser 端口号/协议ls -l /proc/$(lsof -t -i:端口号)|grep exe 二、确认指定…

MySQL-基本SQL语句编写:运算符练习

运算符练习 1.选择工资不在5000到12000的员工的姓名和工资 SELECT last_name,salary FROM employees #where salary not between 5000 and 12000; WHERE salary < 5000 OR salary > 12000;2.选择在20或50号部门工作的员工姓名和部门号 SELECT last_name,department_id…

[AIGC] Spring Interceptor 拦截器详解

文章目录 什么是Spring Interceptor如何使用Spring InterceptorSpring Interceptor的影响 什么是Spring Interceptor Interceptor&#xff08;拦截器&#xff09;是Spring MVC框架中的一种特性&#xff0c;类似于Servlet开发中的Filter&#xff08;过滤器&#xff09;&#xf…

Springboot 测试模块 + 注入bean失败

1.添加依赖 <dependencies><!-- ... 其他依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency> </depende…