7.1 问题
创建account.py脚本,要求如下:

假设在记账时,有一万元钱
无论是开销还是收入都要进行记账
记账内容包括时间、金额和说明等
记账数据要求永久存储
7.2 方案
创建4个函数,分别实现记录开销、记录收入、查询收支、判断函数调用的四个方法,导入时间模块获取时间,导入os模块判断文件是否存在,导入pickle模块用来python特有类型与数据类型转换:

1.调用show_menu()函数后,先判断记录余额文件是否存在,如果不存在创建文件并写入余额,如果存在,利用while循环在交互端输出提示,请用户input0/1/2/3任意数值,如果输入的值不是0/1/2/3,打印输入值无效请重新输入并重新开始循环,如果输入的值是3,停止整个循环,如果输入的值是0/1/2通过字典键值对关联关系,调用相对应函数

2.如果输入的值是0,字典cmds中0键对应的值是spend_money,调用spend_money ()记录开销函数,让此函数实现获取当前系统日期、输入开销金额、输入开销备注信息、以二进制读方式打开记录余额文件计算本次开销后余额,以写方式打开记录余额文件将计算后开销余额写入文件,以追加方式打开记账文件,将日期、开销、备注、余额写入追加入记账文件最后

3.如果输入的值是1,字典cmds中0键对应的值是save_money,调用save_money ()记录收入函数,让此函数实现获取当前系统日期、输入收入金额、输入收入备注信息、以二进制读方式打开记录余额文件计算本次收入后余额,以写方式打开记录余额文件将计算后收入余额写入文件,以追加方式打开记账文件,将日期、开销、备注、余额写入追加入记账文件最后

4.如果输入的值是2,调用查询收支函数query (),以二进制读方式打开记账文件,利用for循环遍历文件中数据,打印出来,打开记录余额文件读取余额并打印。

需要注意的是:为确保代码可以正常执行,while循环利用try except语句处理异常,优先匹配特殊异常,让用户按下Ctrl+C或Ctrl+D可以退出程序,遇到索引错误可以结束当次循环,重新开始选择选项。

将记录余额文件以及记账文件作为参数传入函数中

7.3 步骤
实现此案例需要按照如下步骤进行。

步骤一:编写脚本

[root@localhost day05]# vim account.py
#!/usr/bin/env python3
#日期  开销  收入  余额  备注
import time
import os
import pickle as p
def spend_money(record, wallet):date = time.strftime('%Y-%m-%d')amount = int(input('金额: '))comment = input('备注: ')with open(wallet, 'rb') as fobj:
#load从数据文件中读取数据,并转换为Python的数据结构balance = p.load(fobj) – amount        with open(wallet, 'wb') as fobj:#dump将数据通过特殊形式转换为只有python语言认识的字符串,并写入文件p.dump(balance, fobj)with open(record, 'a') as fobj:fobj.write("%-15s%-8s%-8s%-10s%-20s\n" %(date, amount, 'n/a', balance, comment))
def save_money(record, wallet):date = time.strftime('%Y-%m-%d')amount = int(input('金额: '))comment = input('备注: ')with open(wallet, 'rb') as fobj:balance = p.load(fobj) + amountwith open(wallet, 'wb') as fobj:p.dump(balance, fobj)with open(record, 'a') as fobj:fobj.write("%-15s%-8s%-8s%-10s%-20s\n" %(date, 'n/a', amount, balance, comment))
def query(record, wallet):with open(record) as fobj:for line in fobj:print(line, end='')with open(wallet, 'rb') as fobj:#load从数据文件中读取数据,并转换为Python的数据结构balance = p.load(fobj)print('当前余额: %s' % balance)
def show_menu():prompt = """(0) 记录开销
(1) 记录收入
(2) 查询收支记录
(3) 退出
请选择(0/1/2/3): """cmds = {'0': spend_money, '1': save_money, '2': query}record = 'record.txt'   # 记帐wallet = 'wallet.data'  # 记录余额if not os.path.exists(wallet):        #判断文件是否存在with open(wallet, 'wb') as fobj:p.dump(10000, fobj)while True:try:choice = input(prompt).strip()[0]except IndexError:continueexcept (KeyboardInterrupt, EOFError):print('\nBye-bye')choice = '3'if choice not in '0123':print('无效输入,请重试')continueif choice == '3':breakcmds[choice](record, wallet)
if __name__ == '__main__':show_menu()

步骤二:测试脚本执行

[root@localhost day05]# python3 account.py
(0) 记录开销
(1) 记录收入
(2) 查询收支记录
(3) 退出
请选择(0/1/2/3): 0
金额: 2000
备注: huafei
(0) 记录开销
(1) 记录收入
(2) 查询收支记录
(3) 退出
请选择(0/1/2/3): 1
金额: 1000
备注: shouru
(0) 记录开销
(1) 记录收入
(2) 查询收支记录
(3) 退出
请选择(0/1/2/3): 2
2018-04-25     2000    n/a     28890     huafei
2018-04-25     n/a     1000    29890     shouru
当前余额: 29890
(0) 记录开销
(1) 记录收入
(2) 查询收支记录
(3) 退出
请选择(0/1/2/3): 3
[root@localhost day05]# python3 account.py
(0) 记录开销
(1) 记录收入
(2) 查询收支记录
(3) 退出
请选择(0/1/2/3): ^C
Bye-bye
[root@localhost day05]# python3 account.py
(0) 记录开销
(1) 记录收入
(2) 查询收支记录
(3) 退出
请选择(0/1/2/3):
Bye-bye

Python制作记账程序相关推荐

  1. 使用Python制作爬虫程序总结

    一.引言 1.什么是网络爬虫? 网络爬虫(又称为网页蜘蛛,网络机器人),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本.如果把互联网就比作一张大网,而爬虫便是在这张网上爬来爬去的蜘蛛,如果它 ...

  2. python制作应用程序_如何将python应用制作成容器镜像?

    能不能一次部署,处处运行?其实这个问题已经有点过时了,别问,问就是 docker,如果你了解过 docker,你就知道,以容器的形式来发布你的应用程序,已经变得非常流行. 本文教你如何将一个 Pyth ...

  3. python制作小程序商城_python 实现(简单的一个购物商城小程序)

    #!/usr/bin/env python #_*_ coding:utf-8 _*_ #商城仓库(这里用字典模拟) goods = {'phone':5200,'camera':3500,'TV': ...

  4. python秒表游戏代码_python编程实战:制作秒表程序

    现如今生活节奏的加快,再加个人们对营养的需求也是在不断加大.我们平时所食用的食物只有在它烹饪到刚刚好的时候才会把它自身的营养充分的发挥出来,可是我们一般对于它的时间方面不是很好把握,所以对于这一点,秒 ...

  5. python 制作抽奖_python制作抽奖程序代码详解

    实现制作抽奖程序,需要认知到我们可以看到一般抽奖程序界面上是有很多按钮的,比如中奖区域,按键开始区域等等,所以我们先要设置界面,然后把这些按钮添加到界面中去,想必这对于学过tkinter的同学应该不难 ...

  6. 碉堡的小程序:用 Python 制作演示迷宫算法的 gif 动画

    微信改版,加星标不迷路! 碉堡的小程序:用 Python 制作演示迷宫算法的 gif 动画 作者:neozhaoliang 本文要介绍的是我写的一个有趣的小程序,一个脱离了低级趣味的程序,一个有益于广 ...

  7. 怎么用python制作简单的程序-神级程序员教你如何用python制作一个牛逼的外挂!...

    玩过电脑游戏的同学对于外挂肯定不陌生,但是你在用外挂的时候有没有想过如何做一个外挂呢?(当然用外挂不是那么道义哈,呵呵),那我们就来看一下如何用python来制作一个外挂.... 我打开了4399小游 ...

  8. 如何制作python检查小软件_如何用Python制作整蛊小程序

    原标题:如何用Python制作整蛊小程序 下面的整蛊程序,千万不要发代码,否则就实现不了你整蛊的目的了.完成后一定要打包成一个exe程序,再发给朋友使用 . 1. 使用 pip install pyi ...

  9. python 制作刷题程序

    python 制作刷题程序 本着方便刷题的目的,作者希望一些在电脑上学习的小伙伴能方便记笔记和刷题练习,然后就做出了这个软件,此程序主要通过截图来保存题目和一些知识点,目前几乎完善完毕,由于可能会出现 ...

最新文章

  1. 2018目标检测最新算法+经典目标检测算法
  2. kali2020设置root用户登录
  3. 【贪心】【AOJ-5】渊子赛马
  4. 不允许有匹配 “[xX][mM][lL]“ 的处理指令目标。
  5. Photoshop 2021神经滤镜Neural Filters离线安装包下载 WIN / MAC(适用于PS 2021版本22.3.X/22.4.X)
  6. 官网CentOs7镜像下载详细步骤
  7. 设置Visual Studio代码折叠
  8. SAS硬盘与SATA硬盘的功能对比-SATA硬盘
  9. matlab mse mae,回归评价指标MSE、RMSE、MAE、R-Squared
  10. JavaWEB10:Request、Response
  11. php后端自学,【后端开发】自学php有哪些好的方法
  12. 对txt文件批量操作
  13. windows下编译64位x264
  14. SVN操作提示被锁定-清理命令Clean up
  15. Python 二次开发 SAP2000 定义
  16. 量化交易摸索-角度计算
  17. fedora 16 安装后的基本配置
  18. oracle查询job号,oracle job号使用
  19. 7.python 移动目录下的文件至另一个目录下
  20. 上班能做什么副业?上班太闲做个什么副业?

热门文章

  1. 设计模式---七大原则
  2. win10系统 桌面计算机删除了,Win10电脑如何删除或者关闭全部磁贴?
  3. 【QT】——OpenGL学习(一)
  4. 基于草图的检索任务数据集整理
  5. java光照补偿_十、长时间曝光(转自 色影无忌)
  6. 软件崩溃时 将堆栈信息写入dump文件, 并使用VS2010定位程序崩溃位置
  7. YC指的是Y Combinator和陆奇
  8. jsp include 标签
  9. JavaWeb—监听器—Eclipse版动力节点学习笔记
  10. Java 泛型中的 PECS 原则