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')

 

posted @ 2019-02-26 07:46  何发奋  阅读(143)  评论(0编辑  收藏  举报