Python Day18 Homework

# # 作业:
import time
from 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消费) 金额"
#
#
#
# # 附加:
# # 可以拓展作者模块,作者可以上传自己的作品
#
#
#

猜你喜欢

转载自www.cnblogs.com/AaronY/p/12563425.html