day17 作业
阅读原文时间:2023年07月10日阅读:1

目录

注意:从文件中读出字符串形式的字典,可以用eval('{"name":"egon","password":"123"}')转成字典格式

is_login = False
def judge_login(login_user):
    def login(func):
        def wrapper(*args,**kwargs):
            if not login_user:
                name_inp = input("请输入你的用户名:")
                pwd_inp = input("请输入你的密码:")
                with open("a.txt","r",encoding="utf-8")as f :
                    for line in f:
                        name,pwd = line.strip().split(":")
                        if name == name_inp and pwd_inp == pwd:
                            print("登录成功")
                            func(*args,**kwargs)
                            global is_login
                            is_login = True
                            break
                    else:
                        print("登录失败")
            else:
                func(*args,**kwargs)
        return wrapper
    return login
@judge_login(is_login)
def eat_chicken(n):
    '''吃鸡腿'''
    print(f"吃{n}个鸡腿")
eat_chicken(1)
@judge_login(is_login)
def eat_chocolates(m):
    '''吃巧克力'''
    print(f"吃{m}个巧克力")
eat_chocolates(2)


import time
user_list={"name" : None, "password":None ,"now":None,"timeout":5}
def login(func):
    def wrapper(*args,**kwargs):
        if user_list['name']:
            timeout = time.time() - user_list['timeout']
            if timeout < user_list['now']:
                return func(*args, **kwargs)
            else:
                print("已超时")
        name_inp = input("请输入你的用户名:")
        pwd_inp = input("请输入你的密码:")
        if name_inp == "hz" and pwd_inp == "123":
            print("登录成功")
            user_list["name"]=name_inp
            user_list["password"]=pwd_inp
            user_list["now"]=time.time()
            func(*args,**kwargs)
        else:
            print("登录失败")
    return wrapper
@login
def eat_chicken(n):
    '''吃鸡腿'''
    time.sleep(2)
    print(f"吃{n}个鸡腿")
eat_chicken(1)
@login
def eat_chocolates(m):
    '''吃巧克力'''
    print(f"吃{m}个巧克力")
    time.sleep(3)
eat_chocolates(2)
@login
def eat_pig(n):
    print(f"吃{n}头猪")
eat_pig(1000)