day15

# 今日作业:
# 1、 编写日志装饰器,实现功能如:一旦函数f1执行,则将消息2017-07-21 11:12:11 f1 run写入到日志文件中,日志文件路径可以指定
# 注意:时间格式的获取
# import time
# time.strftime('%Y-%m-%d %X')
import time
def outter(func):
    def wrapper(*args,**kwargs):
        t = time.strftime('%Y-%m-%d %H:%M:%S')
        with open('log.txt', mode='at', encoding='utf-8') as f:
            log_data=f'{t} {func.__name__} run \n'
            f.write(log_data)
            res = func(*args, **kwargs)
        return res
    return wrapper

@outter
def f1():
    pass
f1()
f1()
f1()
f1()
f1()
# 2、基于迭代器的方式,用while循环迭代取值字符串、列表、元组、字典、集合、文件对象
#str
str1='aberv,b'
str1_iterator = str1.__iter__()
while True:
    try:
        res= str1_iterator.__next__()
        print(res)
    except StopIteration:
        break
#list
l1=[1,2,3,4]
l1_iterator = l1.__iter__()
while True:
    try:
        res1=l1_iterator.__next__()
        print(res1)
    except StopIteration:
        break
#tuple
tu1=(1,2,3,4)
tu1_iterator=tu1.__iter__()
while True:
    try:
        res2=tu1_iterator.__next__()
        print(res2)
    except StopIteration:
        break

#dict
d1={'egon':111,'alex':222,'ayca':333}
d1_iterator =d1.__iter__()
# tu1iterator=tu1.__iter__()
while True:
    try:
        res3=d1_iterator.__next__()
        print(res3)
    except StopIteration:
        break
#set
s1={'egon',1,4,6,'aaa'}
s1_iterator=s1.__iter__()
while True:
    try:
        res4=s1_iterator.__next__()
        print(res4)
    except StopIteration:
        break
#file
with open ('log.txt','r',encoding='utf-8') as f:
    f_iterator=f.__iter__()
    while True:
        try:
            res5=f_iterator.__next__()
            print(res5)
        except StopIteration :
            break



# 3、自定义迭代器实现range功能
def my_range(start,stop,step):
    while start<stop:
        yield start
        start+=step
g=my_range(1,5,2)
print(g)
res1=next(g)
print(res1)
res2=next(g)
print(res2)

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


# 二:完成下述功能
2.1、账号注册
        -  针对文件db.txt,内容格式为:"用户名:密码:金额" 完成注册功能
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消费) 金额"



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




你可能感兴趣的:(python)