【发布时间】:2021-09-26 20:02:25
【问题描述】:
users = [{"username":"tom", "password":1234},{"username":"pete", "password":1234},{"username":"lisa", "password":1234}]
loged_in = False
def login(log):
while loged_in == False:
username_check = input("Please enter your username")
password_check = str(input("Please enter your password"))
for user in users:
if username_check == user["username"] and str(password_check) == str(user["password"]):
print("Welcome, you're logged in.")
loged_in == True
break
if username_check != user["username"] or str(password_check) != str(user["password"]):
print("Wrong username or password, please try again.")
continue
如何让它显示登录是否仅成功/失败一次,而不是显示列表中每个项目的结果?像这样:
“用户名或密码错误,请重试。”
“用户名或密码错误,请重试。”
“用户名或密码错误,请重试。”
【问题讨论】:
-
这是一个错字;
loged_in == True是一个被丢弃的比较。你至少需要loged_in = True成为一个作业(单个=;我不能保证它可以解决其他问题) -
为什么你要遍历所有用户,而你只要求登录/通过一次?
-
另外,它是“记录”而不是“记录”,但这是另一回事
-
并考虑您的数据结构 - 而不是 dicts 列表,只是 dict 其中 key 是用户名和密码是 value 更好这将允许更简单的代码
-
当遍历这样的列表时,只有在没有匹配项的情况下才知道是否输入了错误的用户名或密码。
标签: python for-loop while-loop