You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

传入[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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 10:12:07