Python实践|记账本

import json
import datetime
import time
#初始数据一定要通过程序的方式读入
#一个文本文件中只能保存一种对象

#写入初始数据 
# d='[{"时间": "2021/03/04 15:20:21", "项目": "收到王敏货款", "金额": 20000, "分类": "收入"}]'
# with open(r"data.txt","w") as f:
# 		f.write(d)

#读json数据
def readData():
    with open(r"data.txt",'r') as f :
        jsonData = f.read()
    dataList = json.loads(jsonData)
    return dataList

#写json数据
def writeData(dataList):
    jsonData = json.dumps(dataList,ensure_ascii=False)
    with open(r"data.txt","w") as f:
        f.write(jsonData)
        print("数据写入成功")        

#显示账目
def showData():
    sumIn = 0
    sumOut = 0
    dataList = readData()
    print("************************************************")
    for data in dataList:
        if data["分类"] == "支出":
            sumOut += data["金额"]
            print(data["时间"],"   ",data["项目"],"        ",-data["金额"])
        else:
            sumIn += data["金额"]
            print(data["时间"],"   ",data["项目"],"        ",data["金额"])
    print("************************************************")
    print("总收入为:",sumIn)
    print("总支出为:",sumOut)
    print("结余为:",sumIn-sumOut)

#增加一笔账目
def addData():
    dataList = readData()
    content = input("请输入账单明细:")
    amount = float(input("请输入金额:"))
    c = int(input("选择(1.收入 2.支出):"))
    sort = ("支出")
    if c == 1:
        sort = ("收入")
    
    t = datetime.datetime.now().strftime("%Y/%m/%d %H:%M:%S")
    data = {"时间":t,"项目":content,"金额":amount,"分类":sort}
    dataList.append(data)
    writeData(dataList)

#主函数
if __name__ =='__main__':
    while 1==1:
        showData()
        choice = int(input(print("如需记账请按1,退出请按2")))
        if choice ==1:
            addData()
            time.sleep(2)
            print("\n\n\n")
        else:
            break




  • 1
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值