簡體   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