python - 为什么即使在键超出字典范围时给出了条件也会发生错误
问题描述
这是我的代码。
def return_day(num):
days = {1:"Sunday", 2:"Monday", 3:"Tuesday", 4:"Wednesday", 5:"Thursday", 6:"Friday", 7:"Saturday"}
if (num > 0 or num < 8):
return days[num]
return "None"
print(return_day(10))
并且错误弹出如下。
print(return_day(10))
File "tf_frame.py", line 14, in return_day
return days[num]
KeyError: 10
你能帮我解释一下为什么会发生错误吗?
解决方案
在您的条件下,您说如果 num 大于 0或小于 8,则返回与键 num 关联的值,但您的最大键是 8。在or的情况下,只有一个条件(大于 0/小于 8) 需要为真,如果你想要它以便 if 块仅在两个条件都为真时执行,你可以使用and代替。但是,还有另一种方法可以在不使用 if 条件的情况下执行您想要的操作:使用dict.get(key)
which 将返回键的值(如果存在),如果不存在则返回 None。