zoukankan      html  css  js  c++  java
  • python第十七天作业

    一:编写函数,(函数执行的时间用time.sleep(n)模拟)

    import time
    def num_func(x,y):
        if x > y:
            res = x-y
        else:
            res= y-x
        time.sleep(2)
        print(res)
        return res
    

    二:编写装饰器,为函数加上统计时间的功能

    def timmer(func):
        def wrapper(*args,**kwargs):
            start = time.time()
            res=func(*args,**kwargs)
            end = time.time()
            print(end-start)
            return res
        return wrapper
    
    num_func = timmer(num_func)
    num_func(2,5)
    print(num_func)
    

    三:编写装饰器,为函数加上认证的功能

    def auth(func):
        def wrapper(*args,**kwargs):
            user_name = input('账号:>>').strip()
            user_pwd = input('密码:>>').strip()
            with open(r'db.txt','rb') as f:
                while True:
                    msg = f.readline().decode('utf-8')
                    if not len(msg):
                        print('账号不存在')
                        return
                    if user_name in msg:
                        x,y = msg.strip().split(':')
                        if user_pwd == y:
                            res=func(*args,**kwargs)
                            print('成功')
                            return res
                        else:
                            print('账号密码错误')
    
        return wrapper
    
    num_func = auth(num_func)
    num_func(1,6)
    

    四:编写装饰器,为多个函数加上认证的功能(用户的账号密码来源于文件),要求登录成功一次,后续的函数都无需再输入用户名和密码

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

    login_name = None
    
    
    def atuh_func(func):
        def wrapper(*args,**kwargs):
            global login_name
            if not login_name:
                user_name = input('账号:>>').strip()
                user_pwd = input('密码:>>').strip()
                with open(r'db.txt','rb') as f:
                    while True:
                        msg = f.readline().decode('utf-8')
                        if not len(msg):
                            print('账号不存在')
                            return
                        x, y = msg.strip().split(':')
                        if user_name ==x:
                            if user_pwd == y:
                                res=func(*args,**kwargs)
                                print('成功')
                                login_name = user_name
                                return res
                            else:
                                print('账号密码错误')
            else:
                print('欢迎回来')
                res = func(*args, **kwargs)
                return res
        return wrapper
    
    num_func = atuh_func(num_func)
    num_func(1,5)
    num_func(1,5)
    num_func(1,5)
    num_func(1,5)
    num_func(1,5)
    num_func(1,5)
    

    五:编写装饰器,为多个函数加上认证功能,要求登录成功一次,在超时时间内无需重复登录,超过了超时时间,则必须重新登录

    login_name = None
    num_time = 0
    import time
    def num_func(x,y):
        if x > y:
            res = x-y
        else:
            res= y-x
        time.sleep(2)
        print(res)
        return res
    
    def atuh_func(func):
        def wrapper(*args,**kwargs):
            global login_name
            global num_time
            if num_time > 5:
                login_name = None
                cmd = input('登录超时,输入‘P’请重新登录,其他键退出:>>').strip()
                if cmd!='P':
                    return
            if not login_name:
                user_name = input('账号:>>').strip()
                user_pwd = input('密码:>>').strip()
                with open(r'db.txt','rb') as f:
                    while True:
                        msg = f.readline().decode('utf-8')
                        if not len(msg):
                            print('账号不存在')
                            return
                        x, y = msg.strip().split(':')
                        if user_name ==x:
                            if user_pwd == y:
                                start = time.time()
                                print('登录成功,开始计时')
                                res=func(*args,**kwargs)
                                login_name = user_name
                                end = time.time()
                                num_time = end -start
                                print(num_time)
                                return res
                            else:
                                print('账号密码错误')
            else:
                start1 = time.time()
                print('欢迎回来')
                res = func(*args, **kwargs)
                end1 = time.time()
                one_time = end1 - start1
                num_time += one_time
                return res
        return wrapper
    
    num_func = atuh_func(num_func)
    num_func(1,5)
    num_func(1,5)
    num_func(1,5)
    num_func(1,5)
    num_func(1,5)
    num_func(1,5)
    
  • 相关阅读:
    js全局函数
    几个数拼接生成最大数(java实现)
    数独求解算法(回溯法和唯一解法)java实现
    32位机和64位机下面各类型sizeof的大小
    【经典算法】——KMP,深入讲解next数组的求解
    java 初始化及执行顺序
    CentOS7用yum安装、配置MariaDB 10
    centos7 删除mysql
    Linux下配置两个或多个Tomcat启动
    Linux平台上搭建apache+tomcat负载均衡集群[一台服务器多tomcat集群模式]
  • 原文地址:https://www.cnblogs.com/Lance-WJ/p/12552872.html
Copyright © 2011-2022 走看看