为什么我会收到索引超出范围的错误消息,即使它在范围内?
Why am I getting an index out of range error message even though its in range?
我想绘制 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 还是很陌生,所以我不知道出了什么问题。错误信息是; IndexError:索引超出范围:4
(我正在使用处理 3.5.3)
allRectInfo
包含 20 个列表。这些子列表中的每一个都只有 4 的长度,这意味着索引 3 是最大可访问索引。这就是您在索引 4 处收到错误的原因。
您可能打算使用 allRectInfo[0][i]
这可能是您要找的:
for i in range(numRects):
for x in range(20):
rect(allRectInfo[x][i])
allRectInfo
是一个包含 20 个 sub-lists 的列表,每个列表包含 4 个值。
所以你最多可以访问allRectInfo[19][3]
。
除此之外的一些常识:
顾名思义,rect
很可能是一个带 4 个参数的函数。
您正在使用 20(!!!) 个参数调用它,这应该敲响警钟...
allRectInfo
中的每个列表元素仅包含 4 个元素
在您的循环中,您尝试访问第四个不存在的元素。
除了这个问题,你为什么要传递 20 个元素?
我想你想要做的是以这种方式将值传递给 rect 函数
rect (allRectInfo[i][0], allRectInfo[i][1], allRectInfo[i][2], allRectInfo[i][3], allRectInfo[i][4])
我想绘制 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 还是很陌生,所以我不知道出了什么问题。错误信息是; IndexError:索引超出范围:4
(我正在使用处理 3.5.3)
allRectInfo
包含 20 个列表。这些子列表中的每一个都只有 4 的长度,这意味着索引 3 是最大可访问索引。这就是您在索引 4 处收到错误的原因。
您可能打算使用 allRectInfo[0][i]
这可能是您要找的:
for i in range(numRects):
for x in range(20):
rect(allRectInfo[x][i])
allRectInfo
是一个包含 20 个 sub-lists 的列表,每个列表包含 4 个值。
所以你最多可以访问allRectInfo[19][3]
。
除此之外的一些常识:
顾名思义,rect
很可能是一个带 4 个参数的函数。
您正在使用 20(!!!) 个参数调用它,这应该敲响警钟...
allRectInfo
中的每个列表元素仅包含 4 个元素
在您的循环中,您尝试访问第四个不存在的元素。
除了这个问题,你为什么要传递 20 个元素? 我想你想要做的是以这种方式将值传递给 rect 函数
rect (allRectInfo[i][0], allRectInfo[i][1], allRectInfo[i][2], allRectInfo[i][3], allRectInfo[i][4])