zoukankan      html  css  js  c++  java
  • Python笔记3(作业)

    # 写程序完成下列功能:
    # 1),启动程序,首页面应该显示成如下格式:
    #     欢迎来到博客园首页
    #     1:请登录
    #     2:请注册
    #     3:文章页面
    #     4:日记页面
    #     5:评论页面
    #     6:收藏页面
    #     7:注销
    #     8:退出程序
    # 2),用户输入选项,3~6选项必须在用户登录成功之后,才能访问成功。
    # 3),用户选择登录,用户名密码从register文件中读取验证,三次机会,没成功则结束整个程    序运行,成功之后,可以选择访问3~6项,访问页面之前,必须要在log文件中打印日志,    日志格式为-->用户:xx 在xx年xx月xx日 执行了 %s函数,访问页面时,页面内容为:欢    迎xx用户访问评论(文章,日记,收藏)页面
    # 4),如果用户没有注册,则可以选择注册,注册成功之后,可以自动完成登录(完成自动登录+5    分),然后进入首页选择。
    # 5),注销用户是指注销用户的登录状态,使其在访问任何页面时,必须重新登录。
    # 6),退出程序为结束整个程序运行。
    
    import time
    
    #登录状态字典
    status_dic = {'username':None,'status':False}
    
    flag1 = True #标志位
    #登录
    def login(*args,**kwargs):
        i = 0
        while i < 3:
            username = input('请输入用户名:').strip()
            passward = input('请输入密码:').strip()
            with open('register',encoding='utf-8') as f1:
                for line in f1:
                    line_list = line.strip().split(',')
                    if username == line_list[0] and passward == line_list[1]:
                        print('登录成功...')
                        status_dic['username'] = username
                        status_dic['status'] = True
                        return True
                else:
                    print('输入不正确,请重新输入,还剩%s次机会'%(2-i))
                    if i == 2: return quit()
                i += 1
    
    #注册
    def register():
        flag = True
        while flag:
            username = input('请输入要注册的用户名:').strip()
            f1 = open('register',encoding='utf-8')
            for i in f1:
                i_list = i.strip().split(',')
                if username == i_list[0]:
                    print('用户名重复,请重新输入...')
                    f1.close()
                    break
            else:
                f1.close()
                password = input('请输入要注册的密码:').strip()
                f2 = open('register',encoding='utf-8',mode='a')
                f2.write('
    {},{}'.format(username,password))
                f2.close()
                print('您已经注册成功,并且自动为您登录...')
                status_dic['username'] = username
                status_dic['status'] = True
                return True
    
    #登录认证装饰器
    def wrapper(func):
        def inner(*args,**kwargs):
            if status_dic['status']:
                ret = func(*args,**kwargs)
                return ret
            else:
                print('请先进行登录...')
                if login():
                    ret = func(*args, **kwargs)
                    return ret
        return inner
    
    #打印日志装饰器
    def log_record(func):
        def inner(*args,**kwargs):
            struct_time = time.localtime()
            time_now = time.strftime("%Y-%m-%d %H:%M:%S",struct_time)
            with open('log_func','a',encoding='utf-8') as f1:
                f1.write('用户:%s,在%s 执行了 %s函数
    '%(status_dic['username'],time_now,func.__name__))
            ret = func(*args,**kwargs)
            return ret
        return inner
    
    #文章
    @wrapper
    @log_record
    def aritcle():
        print('欢迎%s来到文章页面'% status_dic['username'])
    
    #日记
    @wrapper
    @log_record
    def diary():
        print('欢迎%s来到日记页面'% status_dic['username'])
    
    #评论
    @wrapper
    @log_record
    def comment():
        print('欢迎%s来到评论页面'% status_dic['username'])
    
    #收藏
    @wrapper
    @log_record
    def enshrine():
        print('欢迎%s来到收藏页面'% status_dic['username'])
    
    #退出程序
    def login_out():
        if status_dic['username'] == None:
            print('先登录才能注销...')
        else:
            status_dic['username'] = None
            status_dic['status'] = False
            print('注销成功...')
    
    #注销
    def quit():
        global flag1
        flag1 = False
        return flag1
    
    #函数字典
    choice_dict = {
        1:login,
        2:register,
        3:aritcle,
        4:diary,
        5:comment,
        6:enshrine,
        7:login_out,
        8:quit
    }
    
    while flag1:
        print('欢迎来到博客园首页
    1:请登录
    2:请注册
    3:文章页面
    4:日记页面
    5:评论页面
    6:收藏页面
    7:注销
    8:退出程序')
        choice = input("请输入您想选择的序号:").strip()
        if choice.isdigit():
            choice = int(choice)
            if 0 < choice <= len(choice_dict):
                choice_dict[choice]()
        else:
            print("您输入的选项有非法字符,请重新输入")
  • 相关阅读:
    Oracle存储过程格式
    Parallel并行运算实例
    唐让的领航少年
    株洲县阳光三农网
    株洲县招商网
    利用css新属性appearance优化select下拉框
    谈谈我的出差感想
    颜色表及html代码
    jquery中DOM的操作方法
    HTML DOM的nodeName,nodeValue,nodeType介绍
  • 原文地址:https://www.cnblogs.com/xingye-mdd/p/8947822.html
Copyright © 2011-2022 走看看