zoukankan      html  css  js  c++  java
  • 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
    ".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:

    
    
  • 相关阅读:
    【笔记】求数据前n个主成分以及对高维数据映射为低维数据
    使用sklearn中的fetch_mldata的错误情况以及可能可行的解决方法
    【笔记】求数据的对应主成分PCA(第一主成分)
    【笔记】主成分分析法PCA的原理及计算
    【笔记】如何确定梯度计算的准确性以及调试梯度下降法
    【笔记】随机梯度下降法
    【笔记】线性回归中的梯度下降法(实现以及向量化并进行数据归一化)
    AttributeError: module 'numpy' has no attribute 'num'
    灵雀云CTO陈恺:从“鸿沟理论”看云原生,哪些技术能够跨越鸿沟?
    容器云在证券行业的探索与实践
  • 原文地址:https://www.cnblogs.com/huluhuluwa/p/13179507.html
Copyright © 2011-2022 走看看