day12

1、编写文件修改功能,调用函数时,传入三个参数(修改的文件路径,要修改的内容,修改后的内容)既可完成文件的修改

def modify(file_path, old_cont, new_cont):
    import os
    with open(file_path, mode='r', encoding='utf-8') as read_f, \
            open(f".{file_path}.swap", mode='w', encoding='utf-8') as write_f:
        for line in read_f.readlines():
            data = line.replace(old_cont, new_cont)
            write_f.write(data)
    os.remove(file_path)
    os.rename(f".{file_path}.swap",file_path)

modify("day12.txt",'帅哥','ugly')

2、编写tail工具

def tail(file_path):
    import time
    with open(file_path,mode='rb') as f:
        f.seek(0,2)
        while True:
            line = f.read()
            if len(line) == 0:
                time.sleep(1)
            else:
                print(line.decode('utf-8'))

3、编写登录功能
文件内账户密码存的格式为 yang:123

def login():
    username = input("请输入您的用户名:").strip()
    password = input("请输入您的密码:").strip()
    with open('day12.txt',mode='r',encoding='utf-8') as f:
        for line in f.readlines():
            list = line.strip('\n').split(':')
            if username == list[0]:
                if password == list[1]:
                    print("登录成功")
                    break
                else:
                    print("密码错误")
                    break
        else:
            print("账号不存在")

4、编写注册功能

def register():
    tag = True
    while tag:
        username = input("请输入你的注册账号:").strip()
        password = input("请输入你的密码:").strip()
        with open('day12.txt',mode='r',encoding='utf-8') as f:
            for line in f.readlines():
                list = line.strip('\n').split(':')
                if list[0] == username:
                    print("用户名已经存在")
                    break
    else:
        with open('day12.txt',mode='a',encoding='utf-8') as f:
            f.write(f'{username}:{password}\n')
            print("注册成功")
register()

5、编写用户认证功能

选做题:编写ATM程序实现下述功能,数据来源于文件db.txt
1、充值功能:用户输入充值钱数,db.txt中该账号钱数完成修改
2、转账功能:用户A向用户B转账1000元,db.txt中完成用户A账号减钱,用户B账号加钱
3、提现功能:用户输入提现金额,db.txt中该账号钱数减少
4、查询余额功能:输入账号查询余额

选做题中的选做题:登录功能
用户登录成功后,内存中记录下该状态,上述功能以当前登录状态为准,必须先登录才能操作

def modify(username,m,old_cont = '0', new_cont = '0'):
    import os
    with open('day12.txt', mode='r', encoding='utf-8') as read_f, \
            open('.day12.txt.swap', mode='w', encoding='utf-8') as write_f:
        lines = read_f.readlines()
        n = 0
        for line in lines:
            # list = line.strip('\n').split(':')
            if username in line:
                line = line.replace(old_cont,new_cont)
                write_f.write(line)
                n += 1
                break
            write_f.write(line)
            n += 1
        for i in range(n, len(lines)):
            write_f.write(lines[i])

    os.remove('day12.txt')
    os.rename(".day12.txt.swap","day12.txt")
    if m == '1':
        return "充值成功"
    else:
        return "提现成功"

def trans(username,transto,gold):
    with open('day12.txt', 'r', encoding='utf-8') as f:
        for line in f.readlines():
            list = line.strip('\n').split(':')
            if list[0] == username:
                old = list[2]
                new = str(int(list[2]) - int(gold))
    res1 = modify(username, '3', old, new)
    with open('day12.txt', 'r', encoding='utf-8') as f:
        for line in f.readlines():
            list = line.strip('\n').split(':')
            if list[0] == transto:
                old = list[2]
                new = str(int(list[2]) + int(gold))
    res2 = modify(transto,'1',old,new)
    if res1 == '提现成功' and res2 == '充值成功':
        return "转账成功"
    else:
        return "转账失败"

def login():
    while True:
        username = input("请输入您的用户名:").strip()
        password = input("请输入您的密码:").strip()
        with open('day12.txt',mode='r',encoding='utf-8') as f:
            for line in f.readlines():
                list = line.strip('\n').split(':')
                if username == list[0]:
                    if password == list[1]:
                        print("登录成功")
                        return username
                        break
                    else:
                        print("密码错误")
                        break
            else:
                print("账号不存在")

def atm():
    username = login()
    while username:
        print(f"""欢迎{username}使用ATM机,输入指令可完成相应操作:
1.充值 2.转账 3.提现 4.查询 5.退出""")
        order = input("请输入您的指令:").strip()
        if order == '1':
            gold = input("请输入您充值的金额:").strip()
            with open('day12.txt','r',encoding='utf-8') as f:
                for line in f.readlines():
                    list = line.strip('\n').split(':')
                    if list[0] == username:
                        old = list[2]
                        new = str(int(list[2])+int(gold))
            res = modify(username, order, old, new)
            print(res)
        elif order == '2':
            transto = input("请输入您要转账的用户名:").strip()
            gold = input("请输入转账的金额:").strip()
            res = trans(username,transto,gold)
            print(res)
        elif order == '3':
            gold = input("请输入您提现的金额:").strip()
            with open('day12.txt', 'r', encoding='utf-8') as f:
                for line in f.readlines():
                    list = line.strip('\n').split(':')
                    if list[0] == username:
                        old = list[2]
                        new = str(int(list[2]) - int(gold))
            res = modify(username, order, old, new)
            print(res)
        elif order == '4':
            with open('day12.txt',mode='r',encoding='utf-8') as f:
                for line in f.readlines():
                    list = line.strip('\n').split(':')
                    if username == list[0]:
                        print(f"您的余额为{list[2]}元")
        elif order == '5':
            break
        else:
            print("未知的指令")

atm()
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容