我正在尝试将用户输入与现有字典进行比较并不断获得值错误。我反复搜索并更改了代码但仍然遇到了相同类型的错误。关于如何解决这个问题的任何想法。我只想验证字典中是否存在用户名和密码。我得到的错误:
文件“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'''
答案 0 :(得分:0)
检查词典,并确保您的词典按照原样排列...如果我使用的是您的应用,则 完全 你的词典应该如何:
users = {
"Viraj": "Viraj",
"myPassword": "myPassword"
}
注意字典key
和value
是如何相同的,这可能是问题!。
答案 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。