繁体   English   中英

将用户输入与Python3中的现有字典进行比较,并继续获取KeyError

[英]Compare user input to an existing dictionary in Python3 and keep getting KeyError

我正在尝试将用户输入与现有字典进行比较,并不断获取价值错误。 我已经反复搜索并更改了代码,但始终收到相同类型的错误。 关于如何解决这个问题的任何想法。 我只想验证字典中是否存在用户名和密码。 我得到的错误:

如果NAME == users [NAME]和PASSWORD == users [PASSWORD],则登录时文件“ C:\\ Users \\ jeff \\ Desktop \\ JAMGR \\ jeff \\ theCards.py”(第262行):KeyError:'jeff001'

def login(entUsername, entPassword):
    NAME = entUsername.get()
    PASSWORD = entPassword.get()
    #print(NAME, PASSWORD) this was to test the stored values (actually works)
    userList()
    if NAME == users[NAME] and PASSWORD == users[PASSWORD]:
        cardCreator()

    else:
        existingUser()

'''Checks their credentials against the ones we have in the data base'''

检查字典,并确保您的字典奠定了,因为它被认为是...如果我使用你的应用程序,这正是你的字典应该怎么样子:

users = {
    "Viraj": "Viraj",
    "myPassword": "myPassword"
}

请注意字典keyvalue如何相同,这可能是问题!

我相信您正在错误地检查字典。 假设您的字典看起来像这样。 您不能通过使用值(通过简单的操作)来获取键,因为字典不是这样设计的。 您想要做的是。

d = {'username': 'password'}
NAME = 'username'
PASSWORD = 'password'

if PASSWORD == d.get(NAME):
    # Correct ...
else:
    # incorrect ...

我将d.get(NAME)用于d[NAME]因为如果字典中不存在与给定内容相匹配的键,则会出现错误。 但是,如果找不到匹配的值,则dict.get()返回None ,这将导致if语句的结果为False。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM