为什么在此代码中列表索引超出范围?

时间:2020-10-03 12:01:33

标签: python python-3.x python-2.7

为什么我会收到此错误?

    arr[i+1]+=arr[i]-k         
                                                                                               
IndexError: list index out of range                                                                                           
     for i in range(0,n):
            if arr[i]>=k:
                t+=1
                arr[i+1]+=arr[i]-k

4 个答案:

答案 0 :(得分:2)

在没有程序目标的情况下给出解决方案,而又看不到k,n的数组,值,但最后一行是arr[i+1]+=arr[i]-k。 对于循环的最后一次迭代,arr[i+1]将不存在。我也是初学者,如果不能帮忙,请对不起。

答案 1 :(得分:1)

因为到达最后一项时,您要求它取数组中的下一个元素并分配一个值(如果最后一项之后没有元素)。因此请尝试更改arr[i+1]使其更合适。

答案 2 :(得分:1)

我将假设n是列表的长度。如果n是列表的长度,则arr[i+1]超出范围。

示例:

for i in range(0,n-1):  # <-- change here
    if arr[i] >= k:
        t += 1
        arr[i+1] += arr[i] - k

答案 3 :(得分:0)

尽管没有足够的代码来有效地回答问题,但变量n的值很可能大于arr的大小,并且当它超过arr的大小时,会给出循环第一行的错误检查条件的主体。

for i in range(0,n):  # <- try decreasing the value of n
    print("check")  # <- or put a print here to ckeck where exactally the error is 
    if arr[i] >= k:
        t += 1
        arr[i+1] += arr[i] - k