Python字典key超出范围已写判断条件仍报KeyError的原因求助
错误原因解释
- 核心问题是条件判断的逻辑运算符使用错误,你误将需要的
and(逻辑与)写成了or(逻辑或)。 - 逻辑或
or的判定规则是只要任意一个条件成立,整个表达式结果就为真。你传入参数10时,10 > 0的结果为真,所以if (num > 0 or num < 8)的整体判定结果为真,程序会直接进入分支执行return days[num],而10不在days字典的键集合中,就会触发KeyError。
修复方案
你只需要将if判断中的or替换为and即可,修改后代码如下:
def return_day(num): days = {1:"Sunday", 2:"Monday", 3:"Tuesday", 4:"Wednesday", 5:"Thursday", 6:"Friday", 7:"Saturday"} if num > 0 and num < 8: return days[num] return "None" print(return_day(10))
你也可以直接使用字典自带的get方法简化逻辑,无需额外写范围判断也能避免KeyError:
def return_day(num): days = {1:"Sunday", 2:"Monday", 3:"Tuesday", 4:"Wednesday", 5:"Thursday", 6:"Friday", 7:"Saturday"} return days.get(num, "None")
内容的提问来源于stack exchange,提问作者passion
相关产品推荐
相关产品推荐

