python-记账小程序(80)

# 转自https://www.jianshu.com/c/00c61372c46a网址
#1,记账时手头有一万块钱
#2,可以记录花的钱,存的钱,以及收支明细

#wallet文件内存总的钱数,余额
#record文件内存的是明细


import pickle
import os
import time

def cost(wallet,record):    #记录花钱的函数
    amount = int(input('amount: ')) #输入数字
    comment = input('comment: ')    #输入
    date = time.strftime('%Y-%m-%d')
    with open(wallet,'rb') as fobj: #从文件取总值减去amount
        balance = pickle.load(fobj) - amount
    with open(wallet,'wb') as fobj:
        pickle.dump(balance,fobj)   #将上面得到的值再写入文件内
    with open(record,'a') as fobj:  #向record对应文件内追加各种信息
        fobj.write(
            '%-15s%-8s%-8s%-8s%-20s\n' % (date,'',amount,balance,comment)
        )

def save(wallet,record):    #记录存钱的函数
    amount = int(input('amount: '))
    comment = input('comment: ')
    date = time.strftime('%Y-%m-%d')
    with open(wallet,'rb') as fobj:
        balance = pickle.load(fobj) + amount
    with open(wallet,'wb') as fobj:
        pickle.dump(balance,fobj)
    with open(record,'a') as fobj:
        fobj.write(
            '%-15s%-8s%-8s%-8s%-20s\n' % (date,amount,'',balance,comment)
        )

def query(wallet,record):   #查询收支明细的函数
    print('%-15s%-8s%-8s%-8s%-20s' % ('date','save','cost','balance','comment'))
    with open(record) as fobj:  #输出明细
        for line in fobj:
            print(line,end='')
    with open(wallet,'rb') as fobj: #输出余额
        balance = pickle.load(fobj)
        print("Latest Balance: %d" % balance)

def show_menu():
    cmds = {'0':save,'1':cost,'2':query}
    prompt = """(0) save
(1) cost
(2) query
(3) exit
Please input your choice(0/1/2/3): """
    wallet = '/tmp/1wallet.data'
    record = '/tmp/1record.txt'
    if not os.path.exists(wallet):
        with open(wallet,'wb') as fobj: #如果/tmp/wallet.data不存在,则创建并写入数据10000
            pickle.dump(10000,fobj)

    while True:
        try:
            choice = input(prompt).strip()[0]   #去除空格,选取第一个数字
        except ImportError:
            continue
        except (KeyboardInterrupt,EOFError):
            print()
            choice == '3'

        if choice not in '0123':
            print('Invalid input. Try again.')
            continue

        if choice == '3':
            break
        cmds[choice](wallet,record) #根据cmds字典和choice选择运行上面定义的函数即查询,花钱,存钱

if __name__ == '__main__':
    show_menu()



  • 1
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个简单的记账小程序的代码: ```python import datetime def add_income(income, income_dict): date = datetime.date.today().strftime('%Y-%m-%d') if date not in income_dict: income_dict[date] = {'income': income, 'expense': 0} else: income_dict[date]['income'] += income def add_expense(expense, expense_dict): date = datetime.date.today().strftime('%Y-%m-%d') if date not in expense_dict: expense_dict[date] = {'income': 0, 'expense': expense} else: expense_dict[date]['expense'] += expense def view_records(income_dict, expense_dict): print('日期\t\t收入\t\t支出') for date in income_dict.keys() | expense_dict.keys(): income = income_dict.get(date, {}).get('income', 0) expense = expense_dict.get(date, {}).get('expense', 0) print(f'{date}\t{income}\t\t{expense}') income_dict = {} expense_dict = {} while True: print('1. 添加收入') print('2. 添加支出') print('3. 查看记录') print('4. 退出') choice = input('请选择操作:') if choice == '1': income = float(input('请输入收入金额:')) add_income(income, income_dict) elif choice == '2': expense = float(input('请输入支出金额:')) add_expense(expense, expense_dict) elif choice == '3': view_records(income_dict, expense_dict) elif choice == '4': break else: print('无效的选择!') ``` 该程序可以实现基本的记账功能,包括添加收入、添加支出和查看记录。用户可以根据提示选择相应的操作,程序会根据用户的选择执行相应的操作,并输出记录。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值