当用户输入不存在的元素时,如何解决KeyError?

2024-10-02 18:26:46 发布

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

部分代码

if password_Dictionary[username] == password:
    print("Allow!\n")
    break
else:
    print("Wrong!\n")

错误

if password_Dictionary[username] == password:
KeyError: 'cskmcdsk'

解释

如果用户输入用户名但不是正确的密码enter code here,程序将正确运行一条打印语句,说明用户输入了错误的密码,但当用户输入了错误的用户名/不存在的用户名时,它会引发“KeyError”,其中“cskmcdsk”是用户尝试输入但不存在的随机用户名

问题:

我如何停止编码导致错误,而是继续运行,并打印一个声明用户名不在字典中的输出


Tags: 代码用户密码dictionaryif错误usernamepassword
2条回答

您可以简单地使用try-catch块来处理密钥错误,因此当出现错误时,您可以捕获它并在捕获KeyError时执行任何您想要的操作

不要使用try/except块(异常不适用于正常控制流)。相反,检查dict中是否存在密钥,例如

if username in dictionary and dictionary[username] == password:
    # do stuff

或者,或者,使用^{}返回None,或者使用一些默认值(一定要选择一个默认值,该默认值也不会是==的另一侧的值),例如

{}.get('notakey')         #=> None
{}.get('notakey', 'foo')  #=> 'foo'

另外,如果您正在存储密码,请确保使用强单向散列函数(例如BCrypt)

相关问题 更多 >