python实现日常记账本小程序

时间:2022-02-10 21:16:38

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