day016作业

作业:

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

ANSR:

dic = {}

def create_dic(func):
    def wrapper(*args, **kwargs):

        res = func(*args, **kwargs)
        dic["{key}".format(key=len(dic))] = func.__name__
        return res
    return wrapper
@create_dic
def register():
    pass
@create_dic
def login():
    ...
@create_dic
def transfer():
    ...

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

ANSR:

import time
def outter(log_path):
    def log_write(func):
        def wrapper(*args, **kwargs):
            res = func(*args, **kwargs)
            with open(log_path, mode="at", encoding="utf-8") as f:
                f.seek(0,2)
                data = "{a} {b} run\n".format(a=time.strftime('%Y-%m-%d %X'),b=func.__name__)
                f.write(data)


            return res
        return wrapper
    return log_write
@outter("access.log")
def f1():
    print("====> from f1")

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

ANSR:

# 字符串
str = "12345"
iter_str = iter(str)
while True:
    try:
        print(next(iter_str))
    except StopIteration:
        break

        
# 文件对象
f = open("db.txt", mode="rt", encoding="utf-8")
iter_f = iter(f)
while True:
    try:
        print(next(iter_f),end="")
    except StopIteration:
        break
f.close()
# 四:====================本周选做作业如下====================
编写小说阅读程序实现下属功能
# 一:程序运行开始时显示
    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消费) 金额"



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

ANSR:


猜你喜欢

转载自www.cnblogs.com/huluhuluwa/p/13179507.html