前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >80-综合练习:记账小程序

80-综合练习:记账小程序

作者头像
凯茜的老爸
发布于 2018-09-11 07:00:45
发布于 2018-09-11 07:00:45
51500
代码可运行
举报
文章被收录于专栏:python百例python百例
运行总次数:0
代码可运行

1、记账时手头有一万块钱 2、可以记录花的钱、存的钱,以及收支明细

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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:
        balance = pickle.load(fobj) - amount
    with open(wallet, 'wb') as fobj:
        pickle.dump(balance, fobj)
    with open(record, 'a') as fobj:
        fobj.write(
            '%-12s%-8s%-8s%-10s%-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(
            '%-12s%-8s%-8s%-10s%-20s\n' % (date, '', amount, balance, comment)
        )

def query(wallet, record):  # 查询收支明细的函数
    print('%-12s%-8s%-8s%-10s%-20s' % ('date', 'cost', 'save', 'balace', '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': cost, '1': save, '2': query}
    prompt = """(0) cost
(1) save
(2) query
(3) exit
Please input your choice(0/1/2/3): """
    wallet = 'wallet.data'
    record = 'record.txt'
    if not os.path.exists(wallet):
        with open(wallet, 'wb') as fobj:
            pickle.dump(10000, fobj)

    while True:
        try:
            choice = input(prompt).strip()[0]
        except IndexError:
            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)

if __name__ == '__main__':
    show_menu()
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018.08.02 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Python学习笔记_Day06
没有异常处理,程序遇到错误就崩溃终止执行了。异常处理需要发现问题,并给出解决问题的编码方案,使得程序 再遇到错误时,不会崩溃,仍然能够向下继续执行。
非著名运维
2022/06/22
3210
Python实现atm机的功能
主要还是参考网上内容,自己做了修改。虽然代码有小bug,但是不影响学习和测试。 功能: 1.额度:8000 2.可以提现,手续费5% 3.每月最后一天出账单,写入文件 4.记录每月日常消费流水 5.提供还款接口 1.atm的脚本 [root@python atm]# cat atm.py #!/usr/bin/env python # -*- coding: utf-8 -*- ''' Date:2017-03-23 Author:Bob ''' import os import time impor
py3study
2020/01/06
9400
Python实现atm机的功能
90-综合练习:备份程序
1、既要可以实现完全备份,又要实现增量备份 2、完全备份时,将目录打个tar包,计算每个文件的md5值 3、增量备份时,备份有变化的文件和新增加的文件,更新md5值
凯茜的老爸
2018/09/11
3300
【python实现学生选课系统】
在当今数字化时代,学生管理系统不仅是教育机构的需求,也是提高教学效率和学生体验的必备工具。Python,作为一种强大而灵活的编程语言,为开发学生选课系统提供了理想的平台。从简单的课程选择到高级的管理功能,Python的优雅性和直观性使其成为开发者们的首选。本文将引导您通过Python创建一个功能强大的学生选课系统,深入了解如何利用技术为教育领域注入新的活力。
老虎也淘气
2024/01/30
3380
Python学习笔记_Day07
函数 函数声明的顺序不重要,重要的是什么时候调用 函数的参数,只写成单一的名称,叫作位置参数;如果写成key=val形式,称作关键字参数 # 定义函数时,默认值参数必须在非默认值参数后面,否则将出现语法错误 >>> def func1(name='bob', age): ... pass ... File "<stdin>", line 1 SyntaxError: non-default argument follows default argument >>> def func1(name,
非著名运维
2022/06/22
7160
Python在生物信息学中的应用:序列化Python对象
我们需要将Python对象序列化为字节流,这样就可以将其保存到文件中、存储到数据库中或者通过网络连接进行传输。
简说基因
2024/02/21
2400
Python在生物信息学中的应用:序列化Python对象
python——pkl文件
pkl文件是python里面保存文件的一种格式,如果直接打开会显示一堆序列化的东西。 cPickle在python3中更名为pickle
全栈程序员站长
2022/10/05
1.1K0
Python程序设计之文件(上)
1.1 文本文件(文本文件存储常规字符串,有若干文本行组成,通常每行使用'\n'结尾。字符串指的是记事本或其他文本编辑器能够正常显示、编辑并且能够被人类直接阅读和理解的字符串)
用户6256742
2024/05/30
1090
Python在Finance上的应用6 :获取是S&P 500的成分股股票数据
在之前的Python教程中,我们介绍了如何获取感兴趣的公司名单(在我们的案例中是S&P 500指数),现在我们将收集所有这些公司的股票数据。
万能数据的小草
2020/02/10
2.1K0
如何保存机器学习模型
这篇文章主要介绍持久化存储机器学习模型的两种方式:pickle和joblib,以及如何DIY自己的模型存储模块。
MeteoAI
2019/08/21
2.7K0
如何保存机器学习模型
python元组,文件的操作
新手刚刚开始学习python,如有写错或者写的不好的地方,请大家多多指导! python元组相加 a = (1,2) b = (3,4) a + b 元组运用乘法 (1,2) * 4  #在这里边,元组不会被当成数字来计算,而是输出4次 给字母类型的元组拍 t = ('bb,','dd','aa','cc') tm = list(t) tm.sort()    #然后输出tm t = tuple(tm) 用for的方式运算 t = (1,2,3,4,5) l = [x + 20 for x in t] 替换元组 t = (1,[2,3],4) t[1][0] = 'spa'   #t元组中第二个数值之后紧挨着的数值 python文件操作 常见的文件运算 output = open(r'd:\a.py', 'w')   创建输出文件(w是指写入) input = open('date', 'r')        创建输入文件(r是指读写) input = open('date')             与上一行想同(r是默认值) input.read()                     把整个文件读取进单一字符串 input.read(N)                    读取之后的N个字节,到一个字符串 input.readline()                 逐行读取,第一次读取第一行,第二次读取下一行 alist = input.readlines()        读取整个文件到字符串列表 output.write(as)                 写入字节字符串到文件 output.writelines(alist)         把列表内所有字符串写入文件 output.close()                   手动关闭(当文件收集完成是会替你关闭文件) output.flush()                   把输出缓冲区刷到硬盘中,但不关闭文件 anyFile.seek(N)                  修改文件位置到偏移量N处以便进行下一个操作 for line in open('data'): use line  文件迭代器一行一行的读取 open('f.txt', encoding='latin-1')   python3.0unicode文本文件(str字符串) open('f.bin', 'rb')                 python3.0二进制byte文件(bytes字符串) 实例应用 myfile = open('myfile.txt', 'w')     #创建一个myfile.txt文件,并打开进行写入 myfile.write('hello,world\n')         myfile.write('good bye'\n)           #\n表示转行 myfile.close()               #关闭文件 然后打开本地目录,看看文件内容是否一样 读取文件 myfile = open('myfile.txt')     #打开文件,默认是只读 myfile.readline()              #读取第一行 myfile.readline()              #读取下一行 把整个文件读取进单一字符串 open('myfile.txt').read()   #把所以文件一次性读取完,\n之后的表示下一行 使用打印的方式来读取 print(open('myfile.txt').read())    #这样处理的结果比较清晰,隔行分开 用for的方式来逐行读取文件 for line in open('myfile.txt'):     print(line,end='') 以二进制的方法打开文件 data = open('myfile.txt', 'rb').read()  #这样的话效果不太明显,可以创建文本写入数字开看看 data[4:8] data[0] bin(data[0])    #二进制的方式显示一个文件 文件存储 x, y, z = 43, 44, 45 s = 'spam' d = {'a': 1,'b': 2} l = [1,2,3] f = open('data.txt', 'w') f.write(s + '\n')    #直接将s插入然后转行 f.write('%s,%s,%s\n' % (x,y,z)) f.write(str(l) + '$' str(d) + '\n')    #str输出l + str输出的d 然后读取看下结果 a = open('data.txt').read() print(a) 去掉多余的行 f = open('data
py3study
2020/01/06
1K0
将mnist数据集保存成numpy格式
代码地址:https://github.com/hsjeong5/MNIST-for-Numpy
marsggbo
2018/12/05
9800
Python+pickle读写二进制文件小案例
对于二进制文件,不能使用记事本或其他文本编辑软件进行正常读写,也无法通过Python的文件对象直接读取和理解二进制文件的内容。必须正确理解二进制文件结构和序列化规则,才能准确地理解二进制文件内容并且设计正确的反序列化规则。 所谓序列化,简单地说就是把内存中的数据在不丢失其类型信息的情况下转成对象的二进制形式的过程,对象序列化后的形式经过正确的反序列化过程应该能够准确无误地恢复为原来的对象。 Python中常用的序列化模块有struct、pickle、marshal和shelve,本文主要介绍pickle模块
Python小屋屋主
2018/04/16
1.9K0
Python实现简单登陆验证(文件操作)
       1.用户名的验证,首先对存储用户名和密码的信息读取,然后再把输入的用户名和从文件中读取的用户名进行比对,如果比对成功则进行下一步的密码验证,如果没有实现则提示重新输入密码,对密码的验证也有一个输入上限,当密码输入错误3次,程序退出。否则验证成功。
py3study
2020/01/19
1.5K0
Python实现简单登陆验证(文件操作)
python3--序列化模块,hashlib模块
__len__    len(obj)的结果依赖于obj.__len__()的结果,计算对象的长度
py3study
2018/08/02
9470
py3_cookbook_notes_01
最近在看Python Cookbook第三版,将看书过程中一些平时不太容易注意的知识点记录下来。 数据结构和算法 解压可迭代对象赋值给多个变量 record = ('Dave', 'dave@example.com', '773-555-1212', '847-555-1212') name, email, *phone_numbers = record 保留最后 N 个元素 from collections import deque def search(lines, pattern, histor
jeremyxu
2018/05/11
1.1K0
python基础—序列化操作
JSON是一种轻量级的数据交换格式,JSON相对于XML而言,更加简单,易读和编写,同时也易于机器解析和生成,除此,我们也可以自定义内部使用的数据交换格式。
dogfei
2020/07/31
5940
dump和load怎么用?
在写代码的时候,有的时候不知道什么时候用何种格式,字符串跟对象转换的时候,到底是用dump还是load.dumps或者loads, 每次都是蒙的,要么就去查,一点效率都没有。
赵云龙龙
2019/11/10
2.3K0
【Python】npy/pkl/csv读写效率测试
CPU: Intel® Core™ i7-10700F 磁盘: ST1000DM010-2EP102 系统:windows10
zstar
2023/03/24
1.2K0
基于深度学习和经典方法的文本分类
本文研究了一种使用CNN和LSTM进行文本分类的方法,通过实验和对比,发现CNN在新闻分类任务上表现较好,LSTM在短文本分类任务上表现较好。同时,本文还探讨了预训练词向量在文本分类中的作用,并提出了改进的预训练词向量方法。
段石石
2017/06/27
9.8K0
基于深度学习和经典方法的文本分类
相关推荐
Python学习笔记_Day06
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验