• 函数的基本使用


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

    import os
    
    
    def func(address, old_concent, new_concent):
        with open(r'{}'.format(address), 'rb') as f, 
                open(r'{}.swap'.format(address), 'wb') as f1:
            for line in f:
                res = line.decode('utf-8').replace(old_concent, new_concent)
                f1.write(bytes(res, encoding='utf-8'))
        os.remove(r'{}'.format(address))
        os.rename('{}.swap'.format(address), '{}'.format(address))
    
    
    adr = input('请输入地址:')
    old = input('请输入需要修改的原文:')
    new = input('请输入需要修改的新文:')
    func(adr, old, new)

    2. 编写tail工具

    import time
    
    
    def input_info():
        with open(r'info.txt', 'ab') as f1:
            res = input('输入要保存的内容:')
            f1.write('{}
    '.format(res).encode('utf-8'))
    
    
    def tail():
        with open(r'info.txt', 'rb') as f2:
            f2.seek(0, 2)
            while True:
                info = f2.read()
                if len(info) == 0:
                    time.sleep(0.5)
                else:
                    print(info.decode('utf-8'), end='')
    
    
    tail()

    3. 编写登录功能

    def login(account,password):
        with open(r'account.txt','rt',encoding='utf-8') as f1:
            for line in f1:
                acc,pwd = line.strip().split(':')
                if account == acc and pwd == password:
                    print('登录成功')
                    break
            else:
                print('用户名或密码错误')
    
    acc = input('请输入账号')
    pwd = input('请输入密码')
    login(acc, pwd)

    4. 编写注册功能

    def register(account, password):
        with open(r'account.txt', 'a+b') as f:
            f.seek(0, 0)
            for line in f:
                account, password = line.strip().split(':'.encode('utf-8'))
                if acc.encode('utf-8') == account:
                    print('账号已存在')
                    break
            else:
                f.seek(0, 2)
                f.write('
    {}:{}'.format(acc, pwd).encode('utf-8'))
                print('注册成功')
                # f.write(bytes('
    {}:{}'.format(account, password), encoding='utf-8')
    
    acc = input('请输入账号')
    pwd = input('请输入密码')
    register(acc, pwd)

    5. 编写用户认证功能

    def login():
        inp_u = input("用户名:").strip()
        inp_p = input("密码:").strip()
        with open(r'db.txt', 'rt', encoding='utf-8') as f:
            for line in f:
                user, pwd = line.strip().split(':')
                if inp_u == user and inp_p == pwd:
                    print("登录成功")
                    return True
            else:
                print("用户名密码错误")
                return False
    def check_user(user_check):
        if user_check:
            print("有趣的功能")
        else:
            print("请先登录")
    def main():
        user_check = False
        msg = """
        1、登录
        2、有趣的功能
        """
        tag = True
        dic = {
            '1': True,
            '2': False
        }
        while tag:
            print(msg)
            num = input("请输入编号:").strip()
            if not num.isdigit() and num not in dic:
                print("必须输入指定编号")
            else:
                if dic[num]:
                    user_check = login()
                else:
                    check_user(user_check)

    6. 编写ATM程序

    '''
    # 1、充值功能:用户输入充值钱数,db.txt中该账号钱数完成修改
    # 2、转账功能:用户A向用户B转账1000元,db.txt中完成用户A账号减钱,用户B账号加钱
    # 3、提现功能:用户输入提现金额,db.txt中该账号钱数减少
    # 4、查询余额功能:输入账号查询余额
    # 选做题中的选做题:登录功能
    # 用户登录成功后,内存中记录下该状态,上述功能以当前登录状态为准,必须先登录才能操作
    '''
    
    # 充值功能
    import os
    
    
    # def recharge(account, money):
    def recharge():
        account = login_user
        money = input('请输入充值金额:')
        with open(r'db.txt', 'rt', encoding='utf-8') as f1, 
                open(r'db.txt.swap', 'wt', encoding='utf-8') as f2:
            for line in f1:
                acc, money_old = line.strip().split(':')
                if acc == account:
                    money_old = int(money_old)
                    money = int(money)
                    res = line.replace(str(money_old), str(money_old + money))
                    f2.write(res)
                    print('充值金额为{},余额为{}'.format(money, money + money_old))
                else:
                    f2.write(line)
        os.remove(r'db.txt')
        os.rename('db.txt.swap', 'db.txt')
    
    
    # recharge('A', 500)
    
    
    #  转账功能
    # def transfer_accpunts(account_trans, account_rece, money):
    def transfer_accpunts():
        account_trans = login_user
        account_rece = input('请输入接收账号:')
        money = input('请输入转账金额:')
        with open(r'db.txt', 'rt', encoding='utf-8') as f3, 
                open(r'db.txt.swap', 'wt', encoding='utf-8') as f4:
            for line in f3:
                acc, money_old = line.strip().split(':')
                money_old = int(money_old)
                money = int(money)
                if acc == account_trans:
                    money_l1 = money_old - money
                    res = line.replace(str(money_old), str(money_l1))
                    f4.write(res)
                elif acc == account_rece:
                    money_l2 = money_old + money
                    res = line.replace(str(money_old), str(money_l2))
                    f4.write(res)
                else:
                    f4.write(line)
            print('{}向{}转账{}元,{}余额为{},{}余额为{}'.format(account_trans, money, account_rece, account_trans, money_l1,
                                                      account_rece, money_l2))
        os.remove('db.txt')
        os.rename('db.txt.swap', 'db.txt')
    
    
    # transfer_accpunts('B','C',1500)
    
    
    # 提现功能
    # def withdraw(account, money):
    def withdraw():
        account = login_user
        money = input('请输入提现金额:')
        with open(r'db.txt', 'rt', encoding='utf-8') as f5, 
                open(r'db.txt.swap', 'wt', encoding='utf-8') as f6:
            for line in f5:
                acc, money_old = line.strip().split(':')
                if acc == account:
                    money_old = int(money_old)
                    money = int(money)
                    res = line.replace(str(money_old), str(money_old - money))
                    f6.write(res)
                    print('提现金额为{},余额为{}'.format(money, money_old - money))
                else:
                    f6.write(line)
        os.remove(r'db.txt')
        os.rename('db.txt.swap', 'db.txt')
    
    
    # withdraw('A',100)
    
    
    # 查询余额
    def remainder():
        account = login_user
        with open(r'db.txt', 'rt', encoding='utf-8') as f7:
            for line in f7:
                acc, money = line.strip().split(':')
                if acc == account:
                    print('余额为{}元'.format(money))
    
    
    # remainder('A')
    func_dic = {
        '0': ('退出', None),
        '1': ('充值', recharge),
        '2': ('转账', transfer_accpunts),
        '3': ('提现', withdraw),
        '4': ('查询', remainder),
    }
    
    login_user = None
    while True:
        account = input('请输入账号:')
        password = input('请输入密码:')
        with open(r'bb.txt', 'rt', encoding='utf-8') as ff:
            for line in ff:
                acc, pwd = line.strip().split(':')
                if acc == account and pwd == password:
                    # global login_user
                    login_user = account
                    print('{}登陆成功'.format(login_user))
                    while True:
                        for i, j in func_dic.items():
                            print('{}:{}'.format(i, j[0]))
                        operate = input('请输入待选事项序号:').strip()
                        if not operate.isdigit():
                            print('请重新输入序号')
                        if operate == '0':
                            break
                        elif operate in func_dic:
                            func_dic[operate][1]()
                        else:
                            print('请重新输入正确序号')
                    break
            else:
                print('账号密码错误,请重新输入')
        break
    # print('hello')
  • 相关阅读:
    004-核心技术-netty概述、传统IO、Reactor线程模型
    003-核心技术-IO模型-NIO-基于NIO群聊示例
    002-核心技术-IO模型-NIO【Selector、Channel、Buffer】、零拷贝
    018-redis-命令合计
    【整理】js、python、java分别对url进行编码和解码
    深度 | 翟东升:写在美帝国撤军和阿富汗政权溃散之际
    修改Windows10 命令终端cmd的编码为UTF-8 && IDEA控制台输出中文乱码
    Dockerfile文件中的ENTRYPOINT,CMD命令跟k8s中command,args之间的关系
    服务器带宽,流量之间的关系
    值得收藏的下载地址
  • 原文地址:https://www.cnblogs.com/avery-w/p/14193033.html
Copyright © 2020-2023  润新知