Solving error: "list index out of range" in Python

Solving error: "list index out of range" in Python

除了我输入 [1,2,3,4,5] 之类的列表时,代码给出了所有测试用例的正确答案。然后显示:

IndexError: list index out of range.

为什么会这样?末尾的 else 语句不应该处理这个问题吗?

def func(n):
    my_list = n.split()
    l = []

    for i in my_list:
         l.append(int(i))

    if len(l)==0 or len(l)==1:
        return None

    for k in range(0, len(l)):
        if l[k+1] >= l[k] + 2:
            return l[k+1]
        else:
            return None

n = input()

print(func(n)) 

错误出现在这里:

for k in range(0,len(l)):
    if l[k+1]>=l[k]+2:
        return l[k+1]
    else:
        return None

因为您迭代到 k = len(l) - 1(包括在内),最后一次迭代的 k + 1 将是 len(l),这是越界的。相反,您应该将 for 更改为:

for k in range(0, len(l) - 1):
    ...

现在,最后一次迭代的 k + 1 的值将是 len(l) - 2 + 1 = len(l) - 1,它在 l 的范围内。