zoukankan      html  css  js  c++  java
  • 3-24作业

    作业:
    1、编写课上讲解的有参装饰器准备明天默写
    2:还记得我们用函数对象的概念,制作一个函数字典的操作吗,来来来,我们有更高大上的做法,在文件开头声明一个空字典,然后在每个函数前加上装饰器,完成自动添加到字典的操作
    3、 编写日志装饰器,实现功能如:一旦函数f1执行,则将消息2017-07-21 11:12:11 f1 run写入到日志文件中,日志文件路径可以指定
    注意:时间格式的获取
    import time
    time.strftime('%Y-%m-%d %X')
    4、基于迭代器的方式,用while循环迭代取值字符串、列表、元组、字典、集合、文件对象
    5、自定义迭代器实现range功能

    1、编写课上讲解的有参装饰器准备明天默写

    func_dic = {}

    # 有参装饰器 x接收的是用户输入功能对应的编号
    def outer(x): # x ---> '1'
    # 无参装饰器
    def wrapper(func): # func --> login, func --> register
    func_dic[x] = func # {'1': login, '2': register}

    def inner(*args, **kwargs):
    res = func(*args, **kwargs)

    return res

    return inner

    return wrapper


    @outer('1') # ---> @wrapper
    def login():
    pass


    @outer('2')
    def register():
    pass


    print(func_dic)
     

    2、还记得我们用函数对象的概念,制作一个函数字典的操作吗,来来来,我们有更高大上的做法,在文件开头声明一个空字典,然后在每个函数前加上装饰器,完成自动添加到字典的操作

     1 d = {}
     2 key = 0
     3 def add_dict(func):
     4     def wrapper(*args, **kwargs):
     5         global key
     6         d['{}'.format(key)] = func
     7         key += 1
     8     return wrapper
     9 
    10 @add_dict
    11 def index():
    12     pass
    13 @add_dict
    14 def home():
    15     pass
    16 index()
    17 home()
    18 
    19 print(d)
     

    3、 编写日志装饰器,实现功能如:一旦函数f1执行,则将消息2017-07-21 11:12:11 f1 run写入到日志文件中,日志文件路径可以指定
    注意:时间格式的获取
    import time
    time.strftime('%Y-%m-%d %X')

    import time


    # 给被装饰对象添加执行日志装饰器
    def add_log_wrapper(func):
    def inner(*args, **kwargs):

    # 在被装饰对象调用前的操作
    # 1) 将被装饰对象的执行日志 写入 log.txt文件中
    with open('log.txt', 'a', encoding='utf-8') as f:
    now_time = time.strftime('%Y-%m-%d %X')
    func_name = func.__name__
    log_str = f'{now_time} {func_name} run '
    print(log_str)
    f.write(log_str)

    res = func(*args, **kwargs) # 被装饰对象的调用

    # 在被装饰对象调用后的操作

    return res

    return inner


    @add_log_wrapper
    def f1():
    # time.sleep(10)
    print('我是f1函数的执行...')


    @add_log_wrapper
    def f2():
    print('我是f2函数的执行')
    # f1()

    f2()
     

    4、基于迭代器的方式,用while循环迭代取值字符串、列表、元组、字典、集合、文件对象

    def my_iter(obj):  # 字符串、列表、元组、字典、集合、文件
    # 'tank'.__iter__()
    iter_obj = obj.__iter__()
    while True:
    try:
    print(iter_obj.__next__())

    except StopIteration:
    break

    my_iter('tom')

    5、自定义迭代器实现range功能

    # res = range(1, 10, 2)
    # print(res)
    # print(type(res)) # <class > 都想象成一个迭代器


    def my_range(start, end, move=1): # 10-9
    while start < end:
    # print(start) # 1, 3, 5, 7, 9
    yield start
    start += move # start += 2



    res1 = range(1, 10, 2)
    # __str__: range(1, 10, 2)
    print(res1) # range(1, 10, 2) ---> class range()

    res2 = my_range(1, 10, 2) # <generator object my_range at 0x10712e410>
    print(res2)

    for line in res1:
    print(line)

    for line2 in res2:
    print(line2)
     

    ====================本周选做作业如下====================
    编写小说阅读程序实现下属功能
    # 一:程序运行开始时显示
    0 账号注册
    1 充值功能
    2 阅读小说


    # 二: 针对文件db.txt,内容格式为:"用户名:密码:金额",完成下述功能
    2.1、账号注册
    2.2、充值功能

    # 三:文件story_class.txt存放类别与小说文件路径,如下,读出来后可用eval反解出字典
    {"0":{"0":["倚天屠狗记.txt",3],"1":["沙雕英雄转.txt",10]},"1":{"0":["令人羞耻的爱.txt",6],"1":["二狗的妻子与大草原的故事.txt",5]},}

    3.1、用户登录成功后显示如下内容,根据用户选择,显示对应品类的小说编号、小说名字、以及小说的价格
    """
    0 玄幻武侠
    1 都市爱情
    2 高效养猪36技
    """

    3.2、用户输入具体的小说编号,提示是否付费,用户输入y确定后,扣费并显示小说内容,如果余额不足则提示余额不足

    # 四:为功能2.2、3.1、3.2编写认证功能装饰器,要求必须登录后才能执行操作

    # 五:为功能2.2、3.2编写记录日志的装饰器,日志格式为:"时间 用户名 操作(充值or消费) 金额"

    # 附加:
    # 可以拓展作者模块,作者可以上传自己的作品

  • 相关阅读:
    Selenium简单测试页面加载速度的性能(Page loading performance)
    Selenium Page object Pattern usage
    Selenium如何支持测试Windows application
    UI Automation的两个成熟的框架(QTP 和Selenium)
    分享自己针对Automation做的两个成熟的框架(QTP 和Selenium)
    敏捷开发中的测试金字塔(转)
    Selenium 的基础框架类
    selenium2 run in Jenkins GUI testing not visible or browser not open but run in background浏览器后台运行不可见
    eclipse与SVN 结合(删除SVN中已经上传的问题)
    配置Jenkins的slave节点的详细步骤适合windows等其他平台
  • 原文地址:https://www.cnblogs.com/2722127842qq-123/p/12559071.html
Copyright © 2011-2022 走看看