首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么我得到一个索引超出范围的错误信息,即使它在范围内?

为什么我得到一个索引超出范围的错误信息,即使它在范围内?
EN

Stack Overflow用户
提问于 2019-05-24 05:32:35
回答 3查看 67关注 0票数 -6

我想画20个矩形(用于我的破砖机游戏),我把它们列在一个列表中。但是当我运行它的时候,它给了我一个索引错误。

代码语言:javascript
复制
def setup():
    numRects = 20

    rectInfo = [rX, rY, rW, rH] 
    allRectInfo = [rectInfo[:] for i in range(numRects)]
    allRectInfo[0] = [45, 20, 110, 30]
    allRectInfo[1] = [45, 60, 110, 30]
    allRectInfo[2] = [45, 100, 110, 30]
    allRectInfo[3] = [45, 140, 110, 30]
    allRectInfo[4] = [195, 20, 110, 30]
    allRectInfo[5] = [195, 60, 110, 30]
    allRectInfo[6] = [195, 100, 110, 30]
    allRectInfo[7] = [195, 140, 110, 30]
    allRectInfo[8] = [345, 20, 110, 30]
    allRectInfo[9] = [345, 100, 110, 30]
    allRectInfo[10] = [345, 60, 110, 30]
    allRectInfo[11] = [345, 140, 110, 30]
    allRectInfo[12] = [495, 140, 110, 30]
    allRectInfo[13] = [495, 100, 110, 30]
    allRectInfo[14] = [495, 60, 110, 30]
    allRectInfo[15] = [495, 20, 110, 30]
    allRectInfo[16] = [645, 20, 110, 30]
    allRectInfo[17] = [645, 60, 110, 30]
    allRectInfo[18] = [645, 100, 110, 30]
    allRectInfo[19] = [645, 140, 110, 30]


def draw():

    for i in range (numRects):
        rect (allRectInfo[i][0], allRectInfo[i][1], allRectInfo[i][2], allRectInfo[i][3], allRectInfo[i][4], allRectInfo[i][5], allRectInfo[i][6], allRectInfo[i][7], allRectInfo[i][8], allRectInfo[i][9], allRectInfo[i][10], allRectInfo[i][11], allRectInfo[i][12], allRectInfo[i][13], allRectInfo[i][14], allRectInfo[i][15], allRectInfo[i][16], allRectInfo[i][17], allRectInfo[i][18], allRectInfo[i][19])

我想我将范围设置为20,我有20个矩形。我仍然是python的新手,所以我不知道哪里出了问题。错误消息是;IndexError:索引超出范围:4

(即时通信使用processing 3.5.3)

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-05-24 05:37:17

allRectInfo中的每个列表元素只包含4个元素,在循环中,您试图访问第四个元素之后的元素,这些元素并不存在。

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

代码语言:javascript
复制
rect (allRectInfo[i][0], allRectInfo[i][1], allRectInfo[i][2], allRectInfo[i][3], allRectInfo[i][4]) 
票数 1
EN

Stack Overflow用户

发布于 2019-05-24 05:37:00

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

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

除此之外,还有一些常识:

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

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

票数 1
EN

Stack Overflow用户

发布于 2019-05-24 05:36:48

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

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

这可能就是你要找的:

代码语言:javascript
复制
for i in range(numRects):
    for x in range(20):
        rect(allRectInfo[x][i])
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56283188

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档