我正在创建一个简单的程序,用于检查文本文件中的用户名和密码。如果找到用户名和密码,则打印一条消息并授予访问权限。如果详细信息正确,则返回成功消息,但是当我运行代码时,系统提示我输入两次用户名和密码。
这是代码
def login():
loginUsername = input("Enter Username: ")
loginPassword = input("Enter PASSWORD: ")
with open('password.txt') as data:
accounts = data.readlines()
userfound = False
for line in accounts:
splitline = line.split("t")
if loginUsername == splitline[0] and loginPassword == splitline[1]:
userfound = True
break
return userfound
options = input("please make a choice 1 to register a new user account, 2 to login or 3 to exit to program n")
user_found = login()
if options == "1":
register()
elif options == "2":
login()
elif options == "3":
sys.exit()
else:
print("Please make a valid choice")
if user_found:
print("LOGGED IN")
# print menu
else:
print("Login FAILED")
这是程序运行时发生的情况。在本例中,执行了错误的详细信息
请选择1注册新用户帐户,2登录或3退出程序2输入Username: 22输入密码:www输入用户名:www输入密码:www登录失败
login
被调用两次。关于user_found = login()
和
elif options == "2":
login()
你应该只在if-else语句中包含它。
if options == "1":
register()
elif options == "2":
user_found = login()
elif options == "3":
sys.exit()
else:
print("Please make a valid choice")
输入用户名和密码的提示符显示了两次,因为无论用户在下一行选择什么,login()都会调用一次。
user_found = login()
当用户输入选项2时,第二次调用相同的login()。
elif options == "2":
login()
如果我正确理解你的要求,代码需要修改如下:
options = input("please make a choice 1 to register a new user account, 2 to login or 3 to exit to program n")
if options == "1":
register()
elif options == "2":
user_found = login()
elif options == "3":
sys.exit()
else:
print("Please make a valid choice")
if user_found:
print("LOGGED IN")
# print menu
else:
print("Login FAILED")