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'。
如何停止导致错误的编码,而是继续运行并输出表明用户名不在词典中的输出?
答案 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
时执行所需的任何操作。