在第一次输入错误后,如何检查输入是否与列表中的项目相同



我试图创建一个登录系统,检查用户名和密码是否在列表中。我在下面的代码中遇到的问题是,当第一个凭据数组不匹配时,它将只在下一次输入时检查第一个用户密码对。我可以知道这个错误的原因是什么吗?我该如何避免它?

userlist = [["k",'l'],['m','z'],['l','o']] #dummy data
def signin():
username = input("Please enter username: ")
for user in userlist:
if username == user[0]:
password = input("Please enter password: ")
if password == user[1]:
print("correct password")
signin()
else:
print("Incorrect password")
signin()
else:
print("Unregister username")
signin()
signin()

输出:

Please enter username: k
Please enter password: l
correct password       
Please enter username: m
Unregister username    
Please enter username: l
Unregister username    
Please enter username: 

预期输出:

Please enter username: k
Please enter password: l
correct password       
Please enter username: m
Please enter password: z
correct password       
Please enter username: l
Please enter password: o
correct password       
Please enter username: 

将最后一个else放回空格,使其与for循环内联。为什么?现在,如果你在第一次输入时输入l,它会检查这个列表["k",'l']。它不在那里,所以它会去其他地方。将else放在for循环之外可以确保我们在做出决定之前遍历整个列表。

userlist = [["k",'l'],['m','z'],['l','o']] #dummy data
def signin():
username = input("Please enter username: ")
for user in userlist:
if username == user[0]:
password = input("Please enter password: ")
if password == user[1]:
print("correct password")
signin()
else:
print("Incorrect password")
signin()
else:
print("Unregister username")
signin()
signing()

最新更新