为什么即使索引在范围内,也会出现索引超出范围的错误消息?

时间:2019-05-23 21:32:35

标签: python list processing index-error

我想绘制20个矩形(用于我的打砖块游戏),并且在列表中有它们。但是当我运行它时,它给了我一个索引错误。

dsize

我认为我将范围设置为20,我有20个矩形。我对python还是很陌生,所以我不知道怎么了。错误消息是; IndexError:索引超出范围:4

(我正在使用处理3.5.3)

3 个答案:

答案 0 :(得分:1)

allRectInfo是20个子列表的列表,每个子列表包含4个值。

因此,您最多只能访问allRectInfo[19][3]

除此之外还有一些常识:

顾名思义,rect很可能是一个带有4个参数的函数。

您正在使用20(!!!)参数调用它,这应该会响起警钟...

答案 1 :(得分:1)

allRectInfo中的每个列表元素仅包含4个元素 在循环中,您尝试访问第四个元素之后不存在的元素。

除了这个问题,为什么还要传递20个元素? 我认为您想要做的就是通过这种方式将值传递给rect函数

rect (allRectInfo[i][0], allRectInfo[i][1], allRectInfo[i][2], allRectInfo[i][3], allRectInfo[i][4]) 

答案 2 :(得分:0)

allRectInfo包含20个列表。这些子列表中的每个子列表的长度都只有4,这意味着索引3是最大可访问索引。这就是为什么在索引4处出现错误的原因。

您可能打算使用allRectInfo[0][i]

这可能是您想要的:

for i in range(numRects):
    for x in range(20):
        rect(allRectInfo[x][i])