Python Day18 Homework

拥有回忆 提交于 2020-03-25 02:36:29
# # 作业:import timefrom functools import wraps### # 1、编写课上讲解的有参装饰器准备明天默写# def otter(r_type):#     def auto(func):#         @wraps(func)#         def wrapper(*args, **kwargs):#             in_name = input('输入姓名:')#             in_password = input('输入密码:')#             if r_type == 'file':#                 with open('db.txt')as f:#                     for i in f:#                         name, password = i.strip().split(':')#                         if name == in_name and password == in_password:#                             print('登录正确')#                             res = func(*args, **kwargs)#                             return res#                         break#                     else:#                         print('未登录')#             elif r_type == 'mysql':#                 print('mysql')#             else:#                 print('other')##         return wrapper##     return auto### @otter(r_type='file')# def run():#     print('run====>')### run()# 2:还记得我们用函数对象的概念,制作一个函数字典的操作吗,来来来,我们有更高大上的做法,在文件开头声明一个空字典,然后在每个函数前加上装饰器,完成自动添加到字典的操作dic = {}i = 1# 装饰器:自动加入字典功能# def otter(func):#     def wrapper(*args, **kwargs):#         global dic, i#         dic[i] = func.__name__#         i += 1#         res = func(*args, **kwargs)#         return res##     return wrapper### @otter# def run():#     print('run')### @otter# def walk():#     print('walk')### @otter# def fly():#     print('fly')### run()# walk()# print(dic)# 3、 编写日志装饰器,实现功能如:一旦函数f1执行,则将消息2017-07-21 11:12:11 f1 run写入到日志文件中,日志文件路径可以指定# 注意:时间格式的获取# import time# time.strftime('%Y-%m-%d %X')# def otter(func):#     @wraps(func)#     def wrapper(*args, **kwargs):#         res = func(*args, **kwargs)#         with open('db.txt', mode='a')as f:#             r_time=time.strftime('%Y-%m-%d %X')#             f.write(f'{r_time},{func.__name__},run \n')#         return res##     return wrapper### @otter# def run():#     print('run')### @otter# def walk():#     print('walk')### @otter# def fly():#     print('fly')## run()# walk()# fly()# 4、基于迭代器的方式,用while循环迭代取值字符串、列表、元组、字典、集合、文件对象# def z_for(x):#     res = x.__iter__()#     while True:#         try:#             print(res.__next__())#         except StopIteration:#             break### i = [1, 23, 5, 56]# print()# z_for(i)# 5、自定义迭代器实现range功能## def z_range(start, end, long):#     """#     高仿range#     :param start: 起始点#     :param end: 结束点#     :param long: 步长#     :return:#     """#     while start < end:#         print('start是',end='')#         yield start#         start += long### a=z_range(0,5,2)### print(next(a))# print(next(a))# print(next(a))# print(next(a))# ====================本周选做作业如下====================# 编写小说阅读程序实现下属功能# # 一:程序运行开始时显示#     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消费) 金额"#### # 附加:# # 可以拓展作者模块,作者可以上传自己的作品###
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!