输入非123的数字会显示输入123选项,输入空格或者回车会报错,因为choice设置成int型先输入2个正常账户进去预防了用户名为空,密码为空或者小于3个,用户名已存在3种情况只有用户名和对应的密码都输入正确才能登录成功输入选项3退出代码如下:
import sys
import hashlibusers=[]
salt="@@##$@!?"def passwd_md5(passwd):md5=hashlib.md5(passwd.encode("utf-8"))md5.update(salt.encode("utf-8"))return md5.hexdigest()def menu():while True:print("*"*20)print("1.注册")print("2.登录")print("3.退出")print("*"*20)choice=int(input("请输入选项:"))if 1<=choice<=3:breakelse:print("请输入1 or 2 or 3选项")return choicedef exit_Username(username):for i in users:if i.get("username")==username:return Truereturn Falsedef register():username=str(input("请注册用户名:"))passwd=str(input("请注册密码:"))if len(username.replace(" ",""))<1:print("用户名不能为空")returnif len(passwd.replace(" ",""))<3:print("密码长度不能小于3位")returnif exit_Username(username):print("用户已存在")returnuser={}user["username"]=usernameuser["passwd"]=passwd_md5(passwd)users.append(user)print(users)def login(username,passwd):for i in users:if i.get("username")==username:if i.get("passwd")==passwd:return Truereturn Falsedef login_Menu():username=str(input("请输入要登录的用户名:"))passwd=str(input("请输入密码:"))passwd=passwd_md5(passwd)if login(username,passwd):print("登录成功")else:print("登录失败")while True:choice=menu()if choice==1:register()if choice==2:login_Menu()if choice==3:print("系统退出中...")sys.exit()