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

2024-10-03 19:20:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我想画20个矩形(为我的破砖游戏),我有他们在一个列表。但当我运行它时,它会给我一个索引错误。你知道吗

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还是很陌生,所以我不知道怎么了。错误消息为;索引器错误:索引超出范围:4

(Im使用处理3.5.3)


Tags: in游戏列表fordef错误setuprange
3条回答

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

除了这个问题,你为什么要通过20个元素? 我想你要做的是这样把值传递给rect函数

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

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

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

这可能就是你想要的:

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

allRectInfo是20个子列表的列表,每个子列表包含4个值。你知道吗

因此,您最多可以访问allRectInfo[19][3]。你知道吗

除此之外还有一些常识:

顾名思义,rect很可能是一个包含4个参数的函数。你知道吗

你叫它20(!!!)参数,应该敲响警钟。。。你知道吗

相关问题 更多 >