Python二分查找求两列表交叉索引触发空白AssertionError求助
问题定位
从报错堆栈可以直接定位断言错误触发在findCrossoverIndexHelper函数的第11行:assert(right < len(x))。
触发原因
你在findCrossoverIndex函数中调用辅助函数时,传入的right参数值为len(y)。Python列表的合法索引范围是0 ~ 长度-1,len(y)本身已经超出了列表的最大合法索引值。比如第一个测试用例中两个列表长度都是8,传入的right=8,而len(x)同样为8,8 < 8的条件不成立,直接触发断言失败。
修复方案
将findCrossoverIndex函数的最后一行调用代码修改为:
return findCrossoverIndexHelper(x, y, 0, len(y)-1)
即可解决该断言错误,后续所有测试用例均可正常通过。
异常回溯定位方法
Python抛出异常时的堆栈信息会按调用顺序逐层打印,最靠近报错信息的代码行就是直接触发异常的位置。你可以直接查看该行的断言条件,再打印对应位置的变量值,就能快速确认参数不满足条件的原因。
内容的提问来源于stack exchange,提问作者user10620036
相关产品推荐
相关产品推荐

