问答

请问,新手应该如何写出简洁的代码!

作者:admin 2021-04-10 我要评论

我该如何优化我的代码 我目前正在学习Python ,今天学习了装饰器,尝试的写了一下三次验证登录以及登出后重登,我感觉我的代码还很差,请问各位大牛我的代码有哪...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)

我该如何优化我的代码

  • 我目前正在学习Python ,今天学习了装饰器,尝试的写了一下三次验证登录以及登出后重登,我感觉我的代码还很差,请问各位大牛我的代码有哪些方面可以优化。小弟表示感激不尽
# 记录登录状态
login_status = {"user_name": None,
                "status": False}


def decorator(func):
    """装饰器 验证是否登录"""
    def inner(*args, **kwargs):
        if login():
            res = func(*args, **kwargs)
            return res
    return inner


def get_user_info():
    """用户名密码转换字典"""
    with open("./my_file.txt", "r+") as file:
        user_pass = file.read().strip()
        return {i.split("|")[0]: i.split("|")[1] for i in user_pass.split()}


def registered():
    """注册"""
    user_name_password = get_user_info()
    while 1:
        regis_name = input("请输入需要注册的用户名 >>> ").strip()
        if regis_name in user_name_password:
            print("该用户名已存在,请重新输入")
        else:
            break
    regis_pswod = input("请输入您的密码>>> ").strip()
    with open("./my_file.txt", "a") as file:
        file.write(f'{regis_name}|{regis_pswod}\n')


def login():
    """登录功能"""
    if login_status["status"] is True:
        return True
    name_password_dict = get_user_info()
    i = 2
    while 1:
        if i < 0:
            break
        login_name = input("请输入用户名 >>> ").strip()
        login_pswod = input("请输入密码 >>> ").strip()
        if login_name in name_password_dict and login_pswod == name_password_dict[login_name]:
            print("登录成功")
            login_status["user_name"] = login_name
            login_status["status"] = True
            return True
        if i >= 1:
            print(f"登录失败 还剩{i}次机会")
        else:
            print("连续错误三次,退出登录")
        i -= 1
    return False


@decorator
def article():
    print("测试:文章功能")


@decorator
def diary():
    print("测试:日记")
    return "Hello"


@decorator
def draft(item):
    print("测试:草稿")
    print(f"{item}")


if __name__ == '__main__':
    print("登录 【1】\n注册 【2】\n退出 【Q】")
    while 1:
        try:
            first_work = input("请输入您的操作:").strip()
            if first_work not in ["1", "2", "Q", "q"]:
                raise Exception
            elif first_work == "1":
                login()
                break
            elif first_work == "2":
                registered()
                break
            else:
                break
        except Exception:
            print("输入有误")
    while 1:

        print(f"{'=' * 50}\n文章 【1】\n日记 【2】\n草稿 【3】\n注销 【0】\n退出 【Q】\n{'='*50}")

        try:
            work = input("请输入您的操作:").strip()
            if work not in ["1", "2", "3", "0", "Q", "q"]:
                raise Exception
            elif work == "1":
                article()
            elif work == "2":
                diary()
            elif work == "3":
                draft("我是草稿")
            elif work == "0":
                print(f'退出 {login_status["user_name"]} 账号')
                login_status["user_name"] = None
                login_status["status"] = False
            else:
                break
        except Exception:
            print("输入有误")
###

推荐个书:《代碼大全》(Code Complete),亦译作《軟體建構之道》,是一本由麦克康奈尔(Steve McConnell)所寫而由微軟所發行關於軟體開發的書。

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • nginx响应速度很慢

    nginx响应速度很慢

  • 点击选中的多选框,会在已选那一栏显示

    点击选中的多选框,会在已选那一栏显示

  • PHP 多态的理解

    PHP 多态的理解

  • 关于C语言中static的问题

    关于C语言中static的问题

腾讯云代理商
海外云服务器