输入非123的数字会显示输入123选项,输入空格或者回车会报错,因为choice设置成int型 先输入2个正常账户进去 预防了用户名为空,密码为空或者小于3个,用户名已存在3种情况 只有用户名和对应的密码都输入正确才能登录成功 输入选项3退出 代码如下: import sys import hashlib users=[] 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: break else: print("请输入1 or 2 or 3选项") return choice def exit_Username(username): for i in users: if i.get("username")==username: return True return False def register(): username=str(input("请注册用户名:")) passwd=str(input("请注册密码:")) if len(username.replace(" ",""))<1: print("用户名不能为空") return if len(passwd.replace(" ",""))<3: print("密码长度不能小于3位") return if exit_Username(username): print("用户已存在") return user={} user["username"]=username user["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 True return False def 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()