python打造记账本,记账本-简单的python脚本
#====================================#
#花销记账单#
#====================================#
#datetime:2020-1-9 9:20:00
#author: chenshuai
#email: csawyy@163.com
#解题思路
'调用模块-定义函数-循环判断-异常报错优化-退出'
--------------------------------------------------------------------------
#python脚本-交互式;注意格式
import os
import pickle
from timeimport strftime
def save(fname):
'用于记录收入'
try:
amount =int(input('输入金额:'))
comment =input('备注:')
except ValueError:
print('无效的金额!')
return
#函数return类似于循环的break,结束函数
except (KeyboardInterrupt,EOFError):
print('\n Bye-bye')
exit()
date = strftime('%Y-%m-%d')
#取出全部的收支情况列表
with open(fname,'rb')as fobj:
records = pickle.load(fobj)
#计算最新余额
balance = records[-1][-2] + amount
#构建收入情况列表
line = [date,amount,0,balance,comment]
records.append(line)
#将更新后的收支情况列表写回文件
with open(fname,'wb')as fobj:
pickle.dump(records,fobj)
def cost(fname):
'用于记录支出'
amount =int(input('输入金额:'))
comment =input('备注:')
date = strftime('%Y-%m-%d')
with open(fname,'rb')as fobj:
records = pickle.load(fobj)
balance = records[-1][-2] - amount
line = [date,0, amount,balance, comment]
records.append(line)
with open(fname,'wb')as fobj:
pickle.dump(records, fobj)
def query(fname):
#用于查询收支情况
with open(fname,'rb')as fobj:
records =pickle.load(fobj)
#打印内容
print('%-12s%-8s%-8s%-12s%-20s' % ('date','save','cost','balance','comment'))
for linein records:
print('%-12s%-8s%-8s%-12s%-20s'%tuple(line))
def show_menu():
cmds={'0':save,'1':cost,'2':query}
prompt="""
(0) 收入 (1) 支出 (2) 查询 (3) 退出
请选择(0/1/2/3):"""
# 定义变量:文件名称
fname ='account.data'
#初始化文件内容的格式(字段)
init_data=[['2020-01-09',0,0,10000,'init data']]
#文件不存在,则创建
if not os.path.exists(fname):
with open(fname,'wb')as fobj:
pickle.dump(init_data,fobj)
while 1:
try:
choice =input(prompt).strip()
except (KeyboardInterrupt,EOFError):
choice ='3'
if choicenot in ['0','1','2','3']:
print('\033[32;1m无效的输入,请重试!\033[0m')
continue
if choice =='3':
print('\n Bye-bye')
break
cmds[choice](fname)
if __name__ =='__main__':
show_menu()
python打造记账本,记账本-简单的python脚本相关推荐
- python打造记账本_python实现日常记账本小程序
python实现收支的自动计算,能够查询每笔账款的消费详情,具体内容如下 1.函数需要两个文件:一个类似钱包功能,存放钱:另一个用于记录每笔花销的用途 #!/usr/bin/env python im ...
- python打造excel神器_超简单:用Python让Excel飞起来
前言 如何获取学习资源 章Python快速上手 1.1为什么要学习用Python控制Excel 1.2Python编程环境的搭建 1.2.1安装Python官方的编程环境IDLE 1.2.2安装与配置 ...
- 用python实现视频换脸_超简单使用Python换脸实例
换脸! 这段时间,deepfakes搞得火热,比方说把<射雕英雄传>里的朱茵换成了杨幂,看下面的图!毫无违和感! 其实早在之前,基于AI换脸的技术就得到了应用,比方说<速度与激情7& ...
- python函数分几种_简单了解Python中的几种函数
python是支持多种范型的语言,可以进行所谓函数式编程,其突出体现在有这么几个函数: filter.map.reduce.lambda.yield lambda lambda函数的使用方法:在lam ...
- 如何搭建python框架_从零开始:写一个简单的Python框架
原标题:从零开始:写一个简单的Python框架 Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发. 你为什么想搭建一个Web框架?我想有下面几个原因: 有一个 ...
- python爬虫实例-记录一次简单的Python爬虫实例
本次的这篇文章主要是和大家分享了一篇关于记录一次简单的Python爬虫实例 ,有需要的小伙伴可以看一下. 主要流程分为: 爬取.整理.存储 1.其中用到几个包,包括 requests 用于向网站发送请 ...
- python字符串前面加上序号_简单了解python字符串前面加r,u的含义
这篇文章主要介绍了简单了解python字符串前面加r,u的含义,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 u/U:表示unicode字符串 不是 ...
- python 基因序列提取_科学网—简单的Python脚本提取对应位置基因序列(fasta文件) - 王彬忠的博文...
最近,用Python脚本提取,在基因号已知,位置已知条件下,相对应位置的基因序列时发现,这样很简单但是很实用的脚本,在网上却比较难找.而且,能被找到的脚本,相对于具有初级编程能力的人而言,有点难.本人 ...
- python人脸识别系统下载_简单的Python人脸识别系统
案例一 导入图片 思路: 1.导入库 2.加载图片 3.创建窗口 4.显示图片 5.暂停窗口 6.关闭窗口 # 1.导入库 import cv2 # 2.加载图片 img = cv2.imread(' ...
最新文章
- Jenkins创建Maven项目及SSH部署
- mormot数据库连接+查询+序列为JSON
- 使用resNet网络 进行图像分类(jupyter notebook)
- 数据结构与算法-day3-归并 快速排序
- zune linux_快速提示:在出售Zune HD之前,先擦除所有内容
- unsafe jdk9_JDK 9清单:Project Jigsaw,sun.misc.Unsafe,G1,REPL等
- JPA 2.1实体图–第1部分:命名实体图
- 报错, liquibase.exception.ValidationFailedException: Validation Failed
- 接口测试基础知识学习
- Python——创建文件data.txt,共100000行,每行存放一个1~100之间的整数
- 训练AI太辛苦?OpenAI新方法:不如让AI之间互教吧
- 简单聊聊01世界中编码和解码这对磨人的小妖儿
- 微信小程序ui布局常用技巧
- linux下国产达梦数据库的命令行安装
- 窄带Vs宽带 MIMO
- hdu_2670Girl Love Value(dp)
- 在哪里能学到计算机基础知识,电脑基础知识学习
- vs2008 下配置 opencv2.0 的总结,以及 vc6 下配置 opencv1.0 的转帖
- 积攒力量,终会展翅飞翔。Linux学习记录
- BOL简单分析(二)
热门文章
- 内置FET的小型表贴封装 ACDC转换器IC
- 华为手机摄影从入门到精通_最全的华为手机摄影教程~最全的手机相机使用方法详解...
- 李国庆在直播间说了多少大实话
- 面临公司变相裁员该如何应对
- css3+jquery仿win7开机效果
- 学编程c语言高考能加分吗,学好编程,中高考都能加分,还能保送清华北大!...
- linux定时任务整点执行,Linux 设置定时任务crontab命令
- LeetCode--597. 好友申请 I :总体通过率
- 时尚育儿观:情商第一 智商第二
- Smart forms