python实现收支的自动计算,能够查询每笔账款的消费详情,具体内容如下
1、函数需要两个文件:一个类似钱包功能,存放钱;另一个用于记录每笔花销的用途
1
2
3
4
5
6
7
8
|
#!/usr/bin/env python
import cPickle as p
with open ( 'wallet.data' , 'w' ) as f:
p.dump( 10000 ,f)
with open ( 'record.txt' , 'w' ) as f:
pass
|
2、功能实现
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
|
#!!/usr/bin/env python
#coding:utf8
import cPickle as p
import time
date = time.strftime( '%Y%m%d' )
def save_money():
sav_count = int ( raw_input ( 'save money: ' ))
sav_comment = raw_input ( 'doing what: ' )
with open ( 'wallet.data' ) as f:
balance = p.load(f)
new_bal = balance + sav_count
with open ( 'wallet.data' , 'w' ) as f:
p.dump(new_bal,f)
content = '%-12s%-8s%-8s%-10s%-25s\n' % (date, 'N/A' ,sav_count,new_bal,sav_comment)
with open ( 'record.txt' , 'a' )as f:
f.write(content)
def spend_money():
spe_count = int ( raw_input ( 'spend money: ' ))
spe_comment = raw_input ( 'doing what: ' )
with open ( 'wallet.data' ) as f:
balance = p.load(f)
new_bal = balance - spe_count
with open ( 'wallet.data' , 'w' ) as f:
p.dump(new_bal,f)
with open ( 'record.txt' , 'a' )as f:
content = '%-12s%-8s%-8s%-10s%-25s\n' % (date,spe_count, 'N/A' ,new_bal,spe_comment)
f.write(content)
def query_info():
line = '=' * 63
content = '%s\n%-12s%-8s%-8s%-10s%-25s' % (line, 'Date' , 'Cost' , 'Save' , 'Balance' , 'Comment' )
with open ( 'wallet.data' ) as f:
new_bal = p.load(f)
print 'new balance: ' ,new_bal
print content
with open ( 'record.txt' ) as f:
for line in f:
print line
def show_menu():
prompt = '''''
'0':'spend_money'
'1':'save_money'
'2':'query_info'
'3':'quit'
'''
while True :
CMDs = { '0' :spend_money, '1' :save_money, '2' :query_info}
choice = raw_input ( 'which do you want to do ?%s: ' % prompt)
if choice not in '012' :
break
CMDs[choice]()
if __name__ = = '__main__' :
show_menu()
|
3、程序还有改进处,例如将两个文件以参数的形式传入,会简化代码。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:http://blog.csdn.net/shougaogao2011/article/details/50498712