• python博客园(模拟)


    模拟博客园登录:

    要求:

    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),注销用户是指注销用户的登录状态,使其在访问任何页面时,必须重新登录。
    6),退出程序为结束整个程序运行。
    import os
    import time
    
    login_status = {
        'name': None,
        'status': False
    }
    file_None = os.path.exists('test.txt')   # 判断用户文件是否存在
    if file_None:
        pass
    else:
        with open('test.txt', encoding='utf-8', mode='w') as file_Create:
            pass
    
    with open('test.txt', encoding='utf-8', mode='r+') as test:
        data = test.read()
        if len(data) == 0:  # 判断文件是否为空
            test.write('用户名 密码')
    
    
    def login(f):  # 登录加日志
        def inner(*args, **kwargs):
            num = 0
            while num < 3:
                if login_status['status']:  # 如果status=True则无需验证
                    with open('log.file', encoding='utf-8', mode='a') as log_file:
                        ret = f(*args, **kwargs)
                        log_file.write('
    {}:{},执行了{}函数'.format(login_status['name'], time.strftime("%Y-%m-%d"), f))
                        return ret  # 用来返回一个值退出
                else:
                    print('清先登录')
                    username = input('请输入用户名')
                    password = input('请输入密码')
                    with open('test.txt', encoding='utf-8') as f1:
                        for i in f1:
                            new_list = i.strip().split()  # 重文件中取出值以逗号分割 转换成list
                            if username == new_list[0] and password == new_list[1]:  # 判断用户以及密码
                                login_status['name'] = username
                                login_status['status'] = True  # 为True时由上调用函数
                                break
                        else:
                            num += 1
                            print('输入用户名或密码错误还有{}次机会'.format(3 - num))
                            continue
            else:
                print('输入次数太多了请先注册。。。')
    
        return inner
    
    
    def register():  # 注册
        flag = True
        while flag:
            register_name = input('输入你注册的用户名')
            register_pass = input('输入你注册的密码')
            with open('test.txt', encoding='utf-8', mode='r') as file1:
                for i in file1:
                    new_list2 = i.strip().split()
                    if register_name == new_list2[0]:  # 判断注册的用户是否存在
                        print('用户已存在')
                        break  # 如果存在退出
                else:
                    with open('test.txt', encoding='utf-8', mode='a') as file2:
                        file2.write('
    ' + register_name + ' ')  # 不存在则添加
                        file2.write(register_pass)
                        file2.close()
                        print('注册成功')
                        break
    
    
    @login
    def login_success():
        print('欢迎来到登录界面')
    
    
    @login
    def article():
        print('欢迎来到文章界面')
    
    
    @login
    def diary():
        print('欢迎来到日记界面')
    
    
    @login
    def comment():
        print('欢迎来到评论界面')
    
    
    @login
    def Collection():
        print('欢迎来到收藏界面')
    
    
    def Cancellation():
        print('成功注销')
        login_status['name'] = None
        login_status['status'] = False
    
    
    def byebye():
        print('成功退出')
        return exit()
    
    
    dic = {1: login_success,
           2: register,
           3: article,
           4: diary,
           5: comment,
           6: Collection,
           7: Cancellation,
           8: byebye}  # 把函数名定义成字典方便后面调用
    
    while True:
        str = '''##########欢迎来到博客园首页###########
             1: {}
             2: {}
             3: {}
             4: {}
             5: {}
             6: {}
             7: {}
             8: {}
                 '''.format('请登录', '请注册', '文章页面', '日记页面', '评论页面', '收藏页面', '注销', '退出程序')
        print(str)
        Choice = input('输入你的选择')
        if Choice == '1':
            pass
        if Choice.isdigit():
            if '0' < Choice < '9':
                dic[int(Choice)]()
            else:
                print('输入超出范围,重新输入')
        else:
            print('输入为非法字符')

    '''不断进取'''

    努力到无能为力,拼搏到感动自己。
  • 相关阅读:
    eclipse项目迁移到android studio(图文最新版)
    栈上分配存储器的方法 alloca 抽样
    【PHP】PHP获得第一章
    阿里2015回顾面试招收学历(获得成功offer)
    Linux 于 shell 变数 $#,$@,$0,$1,$2 含义解释:
    Codeforces 451E Devu and Flowers(容斥原理)
    hdu 4964 Emmet()模拟
    “度”思考
    Windows Auzre 微软的云计算产品的后台操作界面
    Java设计模式菜鸟系列(两)建模与观察者模式的实现
  • 原文地址:https://www.cnblogs.com/jin-yuana/p/9921673.html
Copyright © 2020-2023  润新知