Python小例-8-记账小程序

Python小例-8-记账小程序,第1张

import pickle

import time

import os

def cost(fname):

    '用于记录花费'

    cost_time = time.strftime('启敏%Y-%m-%d')

    try:#异常处理机制

        cost_deposit = int(input('花销金额:'))

        cost_mark = input('花销说明:')

    except ValueError:

        print('无效的金额')

        return # 函数的return类似于循环的break,return提前结束函数。

    except (KeyboardInterrupt, EOFError):

        print('\nbye-bye')

        exit(1)

    # 在文件中取出所有的收支记录

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

        records = pickle.load(fobj)

    # 计算最新余额

    balance = records[-1][-2] - cost_deposit

    # 构建最新一笔收入

    record = [cost_time,0,cost_deposit,balance,cost_mark]

    # 将收入追加到收支列表中

    records.append(record)

    # 将最新收支情况写入文件

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

        pickle.dump(records,fobj)

def save(fname):

    save_time = time.strftime('%Y-%m-%d')

    try:

        save_deposit = int(input('收入金额:'))

        save_mark = input('收入说明:')

    except ValueError:

        print('无效的金额')

        return

    except (KeyboardInterrupt,EOFError):

        print('bye-bye')

        exit(1)

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

        records = pickle.load(fobj)

    balance = records[-1][-2] +  save_deposit

    record = [save_time,save_deposit,0,balance, save_mark]

    records.append(record)

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

        pickle.dump(records, fobj)

def query(fname):

    '用于查账'

    # 打印表头

    print(f'{"date":<15}{"save":<8}{"cost":<8}{"悄贺枝balance":<12}{"mark":<50}')

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

        records = pickle.load(fobj)

    for date,cost,save,balance,mark in records:

        print(f'{date:<15}{cost:<8}{save:<8}{balance:<12}{mark:<50}')

def menu():

    funcs = {'0':cost,'拍毕1':save,'2':query}

    prompt = '''(0)开销

(1)收入

(2)查询

(3)退出

请选择(0/1/2/3):'''

    fname = 'account.data'

    if not os.path.exists(fname):

        init_data = [[time.strftime('%Y-%m-%d'),0,0,10000,'init_data']]

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

            pickle.dump(init_data,fobj)

    while 1:

        try:

            choice = input(prompt).strip()

        except(KeyboardInterrupt,EOFError):

            choice = '3'

        if choice not in ['0','1','2','3']:

            print('无效输入,重试')

            continue

        if choice == '3':

            print('\nbye_bye')

            break

        funcs[choice](fname)

if __name__ == '__main__':

    menu()

有不少同学学完 Python 后仍然很难将其灵活运用。我整理15个 Python 入门的小程序。在实践中应用 Python 会有事半功倍的效果。

实现数学里的二元二次函数: f(x, y) = 2x^2 + 3y^2 + 4xy ,需要用到指数运算符 **

将一个正整数的个位数,以及除个位数外的部分分离。需要用到 模(取余数) 运算符 % ,和 整除 运算符 //

实现一个简单的累加器,可以接受用户输入3个数字,并将其累加。需要用到 复合赋值运算符:+=

输入年份,判断是否是闰年。闰年判断方法:能被4整除,但不能被100整除;或者能被 400 整除。需要用到 算术运算符 和 逻辑运算符

输虚岩入一个数字,判断基数还是偶数,需要 模 运算和 if ... else 结构

之前做过华氏度转摄氏度,现在通过 分支结构 实现二让誉虚者互转。

输入三个边长度,判断是否构成三角形。 构成三角形的条件:两边之和大于第三边 。

输入成绩分数,输出分数对应的等级。

某企业的奖金根据销售利润按照如下规则计算提成。输入销售利润,计算奖金。

程序随机生成一个正整数,用户来猜,程序根据猜的大小给出相应的提示。最后,输出用户猜了多少次才猜中。

输入一个正整数,判断是否是素数。 素数坦燃定义:大于1的自然数中,只能被1和它本身整除的自然数。如:3、5、7

用程序实现石头剪刀布 游戏 。

字典的key是姓名,value是身高,现在需要按照身高对字典重新排序。

将二元二次函数封装在函数中,方便调用

初学python的小伙伴注意哦~不要只依赖于教程,而忽视实 *** 的能力。不然,是很难有进步的。可以多动动手,尝试一下,积累经验。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12340710.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存