zoukankan      html  css  js  c++  java
  • python基础 day17 模拟博客园登录

    import os
    login_status = {'user': '', 'status': False}
    
    
    def get_userdic():
        user_dic = dict()
        with open('user.txt', 'r', encoding='utf-8') as f1:
            for line in f1:
                user_dic.update({line.strip().split('|')[0]: line.strip().split('|')[1]})
        return user_dic
    
    
    def register():
        user_dic = get_userdic()
        count = 0
        while count < 3:
            new_name = input('请输入新用户名>>>').strip()
            new_password = input('请输入新密码>>>').strip()
            if new_name not in user_dic:
                if new_name.isalnum():
                    if 6 < len(new_password) < 14:
                        with open('user.txt', 'a', encoding='utf-8') as f1:
                            f1.write(f'{new_name}|{new_password}
    ')
                        print('添加成功')
                        break
                    else:
                        print('密码长度要在6~14个字符之间')
                        count += 1
                else:
                    print('用户名只能含有字母或者数字不能含有特殊字符')
                    count += 1
            else:
                print('用户名已存在')
                count += 1
    
    
    def remove_user():
        while 1:
            remover = input('请输入要注销的账号(q退出):').strip()
            user_dic = get_userdic()
            if remover in user_dic:
                pw = input('请输入密码:').strip()
                if pw == user_dic[remover]:
                    user_dic.pop(remover)
                    with open('new_user.txt', 'w') as f1:
                        for u, p in user_dic.items():
                            f1.write(f'{u}|{p}')
                    os.remove('user.txt')
                    os.rename('new_user.txt', 'user.txt')
            elif remover.upper() == 'Q':
                break
            else:
                print('账号不存在')
    
    
    def login():
        user_dic = get_userdic()
        count = 0
        while count < 3:
            username = input('请输入用户名(q退出):').strip()
            if username.upper() == "Q":
                break
            password = input('请输入密码:').strip()
            if username in user_dic and user_dic[username] == password:
                login_status['use'] = username
                login_status['status'] = True
                break
            else:
                print('账号密码错误,重新输入')
                count += 1
    
    
    def auth(f):
        def inner(*args, **kwargs):
            if login_status['status']:
                ret = f(*args, **kwargs)
                return ret
            else:
                login()
                ret = f(*args, **kwargs)
                return ret
        return inner
    
    
    @auth
    def article():
        while 1:
            print('欢迎进入文章页面')
            enter = input('>>>(q返回)')
            if enter.upper() == 'Q':
                break
    
    
    @auth
    def photo():
        while 1:
            print('欢迎进入照片页面')
            enter = input('>>>(q返回)')
            if enter.upper() == 'Q':
                break
    
    
    @auth
    def file():
        while 1:
            print('欢迎进入文件页面')
            enter = input('>>>(q返回)')
            if enter.upper() == 'Q':
                break
    
    
    dic_home = {
        '1 请登录': login,
        '2 请注册': register,
        '3 进入文章页面': article,
        '4 进入照片页面': photo,
        '5 进入文件页面': file,
        '6 注销账号': remove_user,
        '7 退出程序': quit,
    }
    while 1:
        for key in dic_home:
            print(key)
        user_choose = (input('>>>'))
        for key in dic_home:
            if user_choose == key[0]:
                dic_home.get(key)()
  • 相关阅读:
    Android NestedScrolling与分发机制 二
    Android NestedScrolling与分发机制
    Android:View随手指移动
    开发错误记录5-Failed to sync Gradle project ‘HideTitleDemo’
    TouchSlop与VelocityTracker认识
    Android判断Touch为滑动事件还是操作控件
    Android-动画简介
    开发错误记录6----友盟社会化分享与支付宝-微信支付问题
    设计模式之抽象工厂模式
    面试题_抽象工厂,字符反串,冒泡与选择排序
  • 原文地址:https://www.cnblogs.com/west-yang/p/12694011.html
Copyright © 2011-2022 走看看