jz.py

作者: 方正俊辰 | 来源:发表于2020-03-18 23:23 被阅读0次

        下方代码实现了简单的记帐功能,默认初始拥有金额1万元。该代码可以实现收入记账,支持支出记账以及查账这些功能。记账时刻精确到时间单位秒。


import time

import os

import pickleas p

def sr(record,wallet):

date=time.strftime('%Y-%m-%d %H:%M:%S')

amount=int(input('金额:'))

comment=input('用哪去了:')

with open(wallet,'rb')as fobj:

balance=p.load(fobj)-amount

with open(wallet,'wb')as fobj:

p.dump(balance,fobj)

with open(record,'a')as fobj:

fobj.write(

'%-30s%-8s%-8s%-10s%-20s\n' %

(date,amount,'n/a',balance,comment)

)

def jz(record,wallet):

date=time.strftime('%Y-%m-%d %H:%M:%S')

amount=int(input('金额:'))

comment=input('哪来的钱:')

with open(wallet,'rb')as fobj:

banlance=p.load(fobj)+amount

with open(wallet,'wb')as fobj:

p.dump(banlance,fobj)

with open(record,'a')as fobj:

fobj.write(

"%-30s%-8s%-8s%-10s%-20s\n" %

(date,'n/a',amount,banlance,comment)

)

def viewz(record,wallet):

with open(record)as fobj:

for linein fobj:

print(line,end='')

with open(wallet,'rb')as fobj:

balance=p.load(fobj)

print('当前余额:%s' % balance)

def cd_info():

info='''

    (0) 支出    (1) 收入    (2) 查账    (3) 退出

    请输入你要做的操作(0)支出/(1)收入/(2)查账/(3)退出:'''

    cmds={'0':sr,'1':jz,'2':viewz}

record='record.txt'

    wallet='wallet.data'

    if not os.path.exists(wallet):

with open(wallet,'wb')as fobj:

p.dump(10000,fobj)

while True:

try:

choice=input(info).strip()[0]

except IndexError:

continue

        except FileNotFoundError:

print('请操作(0)/(1)后再操作(2):')

except (KeyboardInterrupt,EOFError):

print('\nBye-bye')

choice='3'

        if choicenot in '0123':

print('请重新输入')

continue

        if choice =='3':

print('\n\nBye-Bye\n')

break

        cmds[choice](record,wallet)

if __name__=='__main__':

cd_info()


下方为实现的效果:


[root@web1 wo]# python3 jz.py

    (0) 支出

    (1) 收入

    (2) 查账

    (3) 退出

    请输入你要做的操作(0)支出/(1)收入/(2)查账/(3)退出:2

请操作(0)/(1)后再操作(2):

Traceback (most recent call last):

  File "jz.py", line 74, in <module>

    cd_info()

  File "jz.py", line 72, in cd_info

    cmds[choice](record,wallet)

  File "jz.py", line 33, in viewz

    with open(record) as fobj:

FileNotFoundError: [Errno 2] No such file or directory: 'record.txt'

[root@web1 wo]# python3 jz.py

    (0) 支出

    (1) 收入

    (2) 查账

    (3) 退出

    请输入你要做的操作(0)支出/(1)收入/(2)查账/(3)退出:0

请操作(0)/(1)后再操作(2):

金额:5

用哪去了:zc

    (0) 支出

    (1) 收入

    (2) 查账

    (3) 退出

    请输入你要做的操作(0)支出/(1)收入/(2)查账/(3)退出:2

请操作(0)/(1)后再操作(2):

2020-03-18 23:19:44          5      n/a    9995      zc                 

当前余额:9995

    (0) 支出

    (1) 收入

    (2) 查账

    (3) 退出

    请输入你要做的操作(0)支出/(1)收入/(2)查账/(3)退出:3

请操作(0)/(1)后再操作(2):

Bye-Bye


效果总结:最开始执行时,不支持查账。最先操作需要在(0)/(1)/(3)中作选择。

相关文章

  • jz.py

    下方代码实现了简单的记帐功能,默认初始拥有金额1万元。该代码可以实现收入记账,支持支出记账以及查账这些功能。记账...

网友评论

      本文标题:jz.py

      本文链接:https://www.haomeiwen.com/subject/vgphyhtx.html