请问,新手应该如何写出简洁的代码!
我该如何优化我的代码
- 我目前正在学习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("输入有误")
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
推荐个书:《代碼大全》(Code Complete),亦译作《軟體建構之道》,是一本由麦克康奈尔(Steve McConnell)所寫而由微軟所發行關於軟體開發的書。