传入[1,2,3]调用sum2函数触发list index out of range错误,求原因
问题排查与修复
错误原因
你写的条件判断完全不符合逻辑:
- 你想用
nums <=1和nums >=3判断列表的长度,但实际上是直接拿列表对象和整数做比较,这在Python里要么抛出类型错误,要么得到完全不符合预期的判断结果; - 就算条件写对,你也没覆盖列表长度为2的情况,同时
nums >=3的判断毫无必要——只要列表长度≥2,就可以安全取nums[0]和nums[1]。
当你传入[1,2,3]时,原代码的三个条件都不成立,函数没有返回值(默认返回None),错误的条件逻辑会导致后续操作中触发list index out of range。
修复后的代码
def sum2(nums): if not nums: return 0 elif len(nums) <= 1: return nums[0] else: return nums[0] + nums[1]
关键修正点
- 用
len(nums)获取列表的实际长度,这才是判断元素个数的正确方式; - 用
else覆盖所有长度≥2的情况,不管列表是2个、3个还是更多元素,都返回前两个元素的和; if not nums是Python中判断空列表更简洁的写法,和nums == []等价。
内容的提问来源于stack exchange,提问作者Lxxj
相关产品推荐
相关产品推荐

