#====================================#

#花销记账单#

#====================================#

#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脚本相关推荐

  1. python打造记账本_python实现日常记账本小程序

    python实现收支的自动计算,能够查询每笔账款的消费详情,具体内容如下 1.函数需要两个文件:一个类似钱包功能,存放钱:另一个用于记录每笔花销的用途 #!/usr/bin/env python im ...

  2. python打造excel神器_超简单:用Python让Excel飞起来

    前言 如何获取学习资源 章Python快速上手 1.1为什么要学习用Python控制Excel 1.2Python编程环境的搭建 1.2.1安装Python官方的编程环境IDLE 1.2.2安装与配置 ...

  3. 用python实现视频换脸_超简单使用Python换脸实例

    换脸! 这段时间,deepfakes搞得火热,比方说把<射雕英雄传>里的朱茵换成了杨幂,看下面的图!毫无违和感! 其实早在之前,基于AI换脸的技术就得到了应用,比方说<速度与激情7& ...

  4. python函数分几种_简单了解Python中的几种函数

    python是支持多种范型的语言,可以进行所谓函数式编程,其突出体现在有这么几个函数: filter.map.reduce.lambda.yield lambda lambda函数的使用方法:在lam ...

  5. 如何搭建python框架_从零开始:写一个简单的Python框架

    原标题:从零开始:写一个简单的Python框架 Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发. 你为什么想搭建一个Web框架?我想有下面几个原因: 有一个 ...

  6. python爬虫实例-记录一次简单的Python爬虫实例

    本次的这篇文章主要是和大家分享了一篇关于记录一次简单的Python爬虫实例 ,有需要的小伙伴可以看一下. 主要流程分为: 爬取.整理.存储 1.其中用到几个包,包括 requests 用于向网站发送请 ...

  7. python字符串前面加上序号_简单了解python字符串前面加r,u的含义

    这篇文章主要介绍了简单了解python字符串前面加r,u的含义,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 u/U:表示unicode字符串 不是 ...

  8. python 基因序列提取_科学网—简单的Python脚本提取对应位置基因序列(fasta文件) - 王彬忠的博文...

    最近,用Python脚本提取,在基因号已知,位置已知条件下,相对应位置的基因序列时发现,这样很简单但是很实用的脚本,在网上却比较难找.而且,能被找到的脚本,相对于具有初级编程能力的人而言,有点难.本人 ...

  9. python人脸识别系统下载_简单的Python人脸识别系统

    案例一 导入图片 思路: 1.导入库 2.加载图片 3.创建窗口 4.显示图片 5.暂停窗口 6.关闭窗口 # 1.导入库 import cv2 # 2.加载图片 img = cv2.imread(' ...

最新文章

  1. Jenkins创建Maven项目及SSH部署
  2. mormot数据库连接+查询+序列为JSON
  3. 使用resNet网络 进行图像分类(jupyter notebook)
  4. 数据结构与算法-day3-归并 快速排序
  5. zune linux_快速提示:在出售Zune HD之前,先擦除所有内容
  6. unsafe jdk9_JDK 9清单:Project Jigsaw,sun.misc.Unsafe,G1,REPL等
  7. JPA 2.1实体图–第1部分:命名实体图
  8. 报错, liquibase.exception.ValidationFailedException: Validation Failed
  9. 接口测试基础知识学习
  10. Python——创建文件data.txt,共100000行,每行存放一个1~100之间的整数
  11. 训练AI太辛苦?OpenAI新方法:不如让AI之间互教吧
  12. 简单聊聊01世界中编码和解码这对磨人的小妖儿
  13. 微信小程序ui布局常用技巧
  14. linux下国产达梦数据库的命令行安装
  15. 窄带Vs宽带 MIMO
  16. hdu_2670Girl Love Value(dp)
  17. 在哪里能学到计算机基础知识,电脑基础知识学习
  18. vs2008 下配置 opencv2.0 的总结,以及 vc6 下配置 opencv1.0 的转帖
  19. 积攒力量,终会展翅飞翔。Linux学习记录
  20. BOL简单分析(二)

热门文章

  1. 内置FET的小型表贴封装 ACDC转换器IC
  2. 华为手机摄影从入门到精通_最全的华为手机摄影教程~最全的手机相机使用方法详解...
  3. 李国庆在直播间说了多少大实话
  4. 面临公司变相裁员该如何应对
  5. css3+jquery仿win7开机效果
  6. 学编程c语言高考能加分吗,学好编程,中高考都能加分,还能保送清华北大!...
  7. linux定时任务整点执行,Linux 设置定时任务crontab命令
  8. LeetCode--597. 好友申请 I :总体通过率
  9. 时尚育儿观:情商第一 智商第二
  10. Smart forms