zoukankan      html  css  js  c++  java
  • 0402作业

    1.写函数,返回一个扑克牌列表,里面有52项,每一项是一个元组

    例如:[(‘红心2),(‘草花2), …(‘黑桃‘A’)]

    def poke(*args):
        l1 = []
        l2 = []
        for i in range(2, 11):
                l2.append(i)
        l2.extend('JQKA')
        for j in l2:
            for k in args:
                l1.append((k,j))
        return l1
    print(poke(*['红心','黑桃','方片','梅花']))

    2.写函数,传入n个数,返回字典{‘max’:最大值,’min’:最小值}

    例如:min_max(2,5,7,8,4)

    返回:{‘max’:8,’min’:2}

    def num(*args):
        dic = {}
        l1 = []
        for i in args:
            l1.append(i)
            a=max(l1)
            b=min(l1)
            dic['max'] = a
            dic['min'] = b
        print(dic)
    num(1,2,3,4,5,6)

    3.写函数,专门计算图形的面积

    其中嵌套函数,计算圆的面积,正方形的面积和长方形的面积

    调用函数area(‘圆形’,圆半径)  返回圆的面积

    调用函数area(‘正方形’,边长)  返回正方形的面积

    调用函数area(‘长方形’,长,宽)  返回长方形的面积

    def area():

    def 计算长方形面积():

    pass

    def 计算正方形面积():

    pass

    def 计算圆形面积():

    pass

    def area(name,x=0,y=0):
        def rectangle():
            resulf = x*y
            return resulf
        def square():
            resulf = x ** 2
            return resulf
        def roundness():
            resulf = 3.14*(x ** 2)
            return resulf
        if name == '长方形':
            print(rectangle())
        elif name == '正方形':
            print(square())
        else:
            print(roundness())
    area('长方形',2,9)

    4.写函数,传入一个参数n,返回n的阶乘

    例如:cal(7)

    计算7*6*5*4*3*2*1

    def cal(n):
        s=1
        for i in range(n,0,-1):
            s = i * s
        print(s)
    cal(6)

    5、编写下载网页内容的函数,要求功能是:用户传入一个url,函数返回下载页面的结果(升级题)

    5.1.为题目3编写装饰器,实现缓存网页内容的功能:(升级题)

    具体:实现下载的页面存放于文件中,如果网页有对应的缓存文件,就优先从文件中读取网页内容,否则,就去下载,然后存到文件中

    6给每个函数写一个记录日志的功能,

    功能要求:每一次调用函数之前,要将函数名称,时间节点记录到log的日志中。

    所需模块:

    import time
    struct_time = time.localtime()
    print(time.strftime("%Y-%m-%d %H:%M:%S",struct_time))

    import time
    from functools import wraps
    def wrapper(timmer):
        @wraps(timmer)
        def inner():
            struct_time = time.localtime()
            now_time=time.strftime("%Y-%m-%d %H:%M:%S", struct_time)
            name ='Mr.who'
            with open('log', encoding='utf-8', mode='a')as f1:
                f1.write('%s在%s调用了%s ,%s' % (name,now_time,timmer.__name__,timmer.__doc__))
            ret = timmer()
            return ret
        return inner
    @wrapper
    def timmer():
        '''
        此函数是一个函数
        :return:
        '''
        print('好家伙!')
    timmer()

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

    flag = True
    def login(f):
        def inner(*args,**kwargs):
            global flag
            if flag:
                username = input("请输入用户名").strip()
                pwd = input("请输入密码").strip()
                with open('log',encoding='utf-8',)as f1:
                    for i in f1:
                        if username in i and pwd in i:
                            print('登录成功')
                            f()
                            flag=False
                            break
            else:
                f()
        return inner
    @login    #func1=login(func1)
    def func1():
        print('呵呵')
    @login    #func2=login(func2)
    def func2():
        print('哈哈')
    func1()
    func2()

    8,在编写装饰器,为多个函数加上认证的功能(用户的账号密码来源于文件),要求登录成功一次,后续的函数都无需再输入用户名和密码。这个作业之上进行升级操作:

    设置两套密码,一套为京东账号密码,一套为淘宝账号密码保存在文件中。

    设置四个函数,分别代表 京东首页,京东超市,淘宝首页,淘宝超市。

    循环打印四个选项:东首页,京东超市,淘宝首页,淘宝超市。

    供用户选择,用户输入选项后,执行该函数,四个函数都加上认证功能,只要登陆成功一次,在选择其他函数,后续都无需输入用户名和密码。

    相关提示:用带参数的装饰器。装饰器内部加入判断,验证不同的账户密码。

  • 相关阅读:
    备忘录模式
    观察者模式
    状态模式
    模板方法模式
    策略模式
    装饰者模式
    访问者模式
    工作那些事(二十七)项目经理在项目中是什么角色?
    工作那些事(二十六)个人和团队
    工作那些事(二十五)项目经理与产品经理
  • 原文地址:https://www.cnblogs.com/Mr-Murray/p/8697967.html
Copyright © 2011-2022 走看看