我有这个代码的问题,虽然它的工作方式,但不是我想要的

2024-04-26 22:26:09 发布

您现在位置:Python中文网/ 问答频道 /正文

users = {
    "Armin": "1234",
    "Mehrnaz": "4321"
}

entered_username = input("Enter your username: ")
entered_password = input("Enter your password: ")

while entered_username in users and users[entered_username] != entered_password:
    print("Wrong, Try again")
    entered_username = input("username: ")
    entered_password = input("password: ")
else:
    print("You have logged in successfully ")

在这段代码中,如果我输入了正确的用户名和错误的密码,我会得到“错误的,再试一次”,但是如果我输入了错误的用户名和错误的密码,我仍然会得到“您已成功登录”

请帮忙,谢谢<;三,


Tags: in密码inputyour错误usernamepasswordusers
3条回答

您在“While”中的状态是错误的。应该有:

while (entered_username not in users) or (users[entered_username] != entered_password):

循环中有两个条件:

  1. entered_username in users
  2. users[entered_username] != entered_password

如果这些条件中的任何一个失败,您的循环将不会启动,并且else部分将被执行

当您输入在users字典中不存在的用户名时,第一个条件将为false

如果字典中不存在键,您可以使用^{},默认情况下,它将返回None,并将循环条件简化为:

while users.get(entered_username) != entered_password:
    ...

您可以尝试以下方法:

users = {
    "Armin": "1234",
    "Mehrnaz": "4321"
}

while True:
       
    entered_username = input("username: ")
    entered_password = input("password: ")
    if entered_username in users and users.get(entered_username)==entered_password:
        print ('Successfully logged in.')
        break
    else:
        print("Wrong, Try again")
        

相关问题 更多 >