• 20190226-利用序列化完成小型记账程序


    写一个记账程序,每天收入多少,支出多少,总额剩多少,使用序列化方式保存信息

    算法:

      1.读取输入格式为 value|classify,其中value整数表示收入,负数表示支出

      2.income列表存取收入,spend列表存取支出,deposit存取余额,每次调用函数的时候先获取历史income和spend和deposdit

      3.数据处理完成后income,spend,deposit需要存入序列化中以便下次使用

    注意点:

      序列化需要顺序存储和顺序使用,且需要以二进制的形式读写

    #小练习:写一个记账程序,每天收入多少,支出多少,总额剩多少,使用序列化方式保存信息
    def tally(file):
        import pickle
        fp = open(file,'rb')
        try:
            income = pickle.load(fp)
            spend = pickle.load(fp)
            deposit = pickle.load(fp)
        except:
            income =[]
            spend =[]
            deposit = 0
        fp.close()   
    #读取序列化文件,获取历史income,spend,deposit  
    #value|specification
        while 1:
            content = input('请输入指令:')
            if content.find('exit')!=-1:
                break
                #没有找到exit
            if content.find('|')==-1:
                print('data format is value|specification')
                continue
            value = content.split('|')[0]
            specification = content.split('|')[1]
    #接受用户输入,进行输入格式检查
            try:
                value = float(value)
            except:
                print('data format is value must be a num')
            if value > 0 :
                income.append(content)
            elif value ==0:
                print('空间有限不存0')
            else:
                spend.append(content[1:])
            deposit+=value
        fp = open(file,'wb')
        pickle.dump(income,fp)
        pickle.dump(spend,fp)
        pickle.dump(deposit,fp)
        fp.close()
    #数据处理结束后存储序列化
        print(income)
        print(spend)
        print(deposit)
    tally('deposit.txt')
  • 相关阅读:
    前端工具Rythem介绍
    Redis持久化————AOF与RDB模式
    Hessian——轻量级远程调用方案
    JavaScript中的类数组对象
    在SpringMVC中获取request对象
    linux下,远程连接mysql
    nohup后台运行jar与关闭
    Vi常用命令
    spring mvc 重定向问题
    eclipse修改jdk后版本冲突问题
  • 原文地址:https://www.cnblogs.com/hyj691001/p/10434999.html
Copyright © 2020-2023  润新知