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

时间:2018-10-27 03:38:36

标签: python python-3.x

部分代码

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

错误

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

解释

如果用户输入的是用户名而不是正确的密码enter code here,则程序会正确运行一条打印语句,指出用户输入的密码错误,但是当用户输入的用户名不正确/不存在时,它会提示'cskmcdsk'是用户尝试输入的随机用户名,但不存在'KeyError'。

问题

如何停止导致错误的编码,而是继续运行并输出表明用户名不在词典中的输出?

2 个答案:

答案 0 :(得分:1)

请勿使用void display(void){ glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); int j=120; for(int i=0;i<1;i++){ glPushMatrix(); if(i%2==0){ glTranslated(-i*j,i*j,0); }else{ glTranslated(i*j,i*j,0); } glScaled(1,1,1); draw_ring(); glPopMatrix(); glFlush(); } } / try块(正常控制流程除外)。相反,请检查字典中是否存在密钥,例如

except

,或者使用dict.get,它将返回if username in dictionary and dictionary[username] == password: # do stuff 或一些默认值(一定要选择一个默认值,该默认值也不会是{{1}另一面的值) }),例如

None

此外,如果您要存储密码,请确保使用强大的单向哈希函数(例如BCrypt)。

答案 1 :(得分:-1)

您可以简单地使用try catch块来解决关键错误,因此,当出现错误时,可以捕获它,并在捕获KeyError时执行所需的任何操作。