首页 > 解决方案 > 为什么即使在键超出字典范围时给出了条件也会发生错误

问题描述

这是我的代码。

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

你能帮我解释一下为什么会发生错误吗?

标签: pythondictionary

解决方案


在您的条件下,您说如果 num 大于 0小于 8,则返回与键 num 关联的值,但您的最大键是 8。在or的情况下,只有一个条件(大于 0/小于 8) 需要为真,如果你想要它以便 if 块仅在两个条件都为真时执行,你可以使用and代替。但是,还有另一种方法可以在不使用 if 条件的情况下执行您想要的操作:使用dict.get(key)which 将返回键的值(如果存在),如果不存在则返回 None。


推荐阅读