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

时间:2015-11-09 23:39:21

标签: python python-3.x dictionary

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

  

文件“C:\ Users \ jeff \ Desktop \ JAMGR \ jeff \ theCards.py”,第262行,登录       如果NAME == users [NAME]和PASSWORD == users [PASSWORD]:   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'''

2 个答案:

答案 0 :(得分:0)

检查词典,并确保您的词典按照原样排列...如果我使用的是您的应用,则 完全 你的词典应该如何:

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

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

答案 1 :(得分:0)

我相信你错误地检查了你的词典。假设你的字典看起来像这样。由于字典不是以这种方式设计的,因此您无法通过使用该值(使用简单的操作)来获取密钥。你想做的是。

 Thread thread = new Thread(() => GetAllFiles("C:\\Users\\modz\\Desktop\\games"));
 thread.Start();

我使用d = {'username': 'password'} NAME = 'username' PASSWORD = 'password' if PASSWORD == d.get(NAME): # Correct ... else: # incorrect ... d.get(NAME)相关联,因为如果字典中没有与给定内容匹配的键,则会出现错误。但是,如果找不到匹配的值,则d[NAME]会返回dict.get(),这会导致您的if语句为False。