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