如何修复:Python 中的 "list index out of range ..."?
How to fix : "list index out of range ..." in Python?
我试图在 Python 中制作康威的生命游戏。我想测试这个盒子是不是边框盒子,勾选四周的盒子等等
我已经尝试将此测试放在评论中并随机化存活的邻居细胞数量。错误消失了,但另一个问题来了
这不是这个问题的主题。
newArr = arr
rows = 0
while rows < maxRows :
cols = 0
while cols < maxCols :
if cols != 0 and cols != maxCols and rows != 0 and rows != maxRows :
checks = 0
if arr[cols-1][rows-1] == '██' :
checks += 1
if arr[cols][rows-1] == '██' :
checks += 1
if arr[cols+1][rows-1] == '██' :
checks += 1
if arr[cols+1][rows] == '██' :
checks += 1
if arr[cols+1][rows+1] == '██' :
checks += 1
if arr[cols][rows+1] == '██' :
checks += 1
if arr[cols-1][rows+1] == '██' :
checks += 1
if arr[cols-1][rows] == '██':
checks += 1
if arr[rows][cols] == ' ' and checks == 3 :
newArr[rows][cols] == '██'
if arr[rows][cols] == '██' and checks > 2 and checks < 3 :
newArr[rows][cols] == '██'
else :
newArr[rows][cols] == ' '
cols += 1
rows += 1
arr = newArr
这里是错误
Traceback (most recent call last):
File "C:/Users/acer/AppData/Local/Programs/Python/Python37/Test.py", line 55, in <module>
if arr[cols+1][rows-1] == '██' :
IndexError: list index out of range
for row in range(1, maxRows - 1):
for col in range(1, maxCols - 1):
aliveNeighbours = 0
for i in range(-1, 2):
for j in range(-1, 2):
if arr[i + row][j + cols] = 'Your symbol' and (i != 0 or j != 0):
aliveNeighbours += 1
#Then check for various conditions for conways' game of life
这会检查单元格周围是否存在活着的邻居。
我们不需要边缘的行和列。
>>> for i in range(-1, 2):
... for j in range(-1, 2):
... if i != 0 or j != 0:
... print(i, j)
...
-1 -1
-1 0
-1 1
0 -1
0 1
1 -1
1 0
1 1
>>>
这会检查每个单元格,除了它自己的单元格,即 0, 0。
如果有任何可以改进的地方,请发表评论。
我试图在 Python 中制作康威的生命游戏。我想测试这个盒子是不是边框盒子,勾选四周的盒子等等
我已经尝试将此测试放在评论中并随机化存活的邻居细胞数量。错误消失了,但另一个问题来了 这不是这个问题的主题。
newArr = arr
rows = 0
while rows < maxRows :
cols = 0
while cols < maxCols :
if cols != 0 and cols != maxCols and rows != 0 and rows != maxRows :
checks = 0
if arr[cols-1][rows-1] == '██' :
checks += 1
if arr[cols][rows-1] == '██' :
checks += 1
if arr[cols+1][rows-1] == '██' :
checks += 1
if arr[cols+1][rows] == '██' :
checks += 1
if arr[cols+1][rows+1] == '██' :
checks += 1
if arr[cols][rows+1] == '██' :
checks += 1
if arr[cols-1][rows+1] == '██' :
checks += 1
if arr[cols-1][rows] == '██':
checks += 1
if arr[rows][cols] == ' ' and checks == 3 :
newArr[rows][cols] == '██'
if arr[rows][cols] == '██' and checks > 2 and checks < 3 :
newArr[rows][cols] == '██'
else :
newArr[rows][cols] == ' '
cols += 1
rows += 1
arr = newArr
这里是错误
Traceback (most recent call last):
File "C:/Users/acer/AppData/Local/Programs/Python/Python37/Test.py", line 55, in <module>
if arr[cols+1][rows-1] == '██' :
IndexError: list index out of range
for row in range(1, maxRows - 1):
for col in range(1, maxCols - 1):
aliveNeighbours = 0
for i in range(-1, 2):
for j in range(-1, 2):
if arr[i + row][j + cols] = 'Your symbol' and (i != 0 or j != 0):
aliveNeighbours += 1
#Then check for various conditions for conways' game of life
这会检查单元格周围是否存在活着的邻居。
我们不需要边缘的行和列。
>>> for i in range(-1, 2):
... for j in range(-1, 2):
... if i != 0 or j != 0:
... print(i, j)
...
-1 -1
-1 0
-1 1
0 -1
0 1
1 -1
1 0
1 1
>>>
这会检查每个单元格,除了它自己的单元格,即 0, 0。
如果有任何可以改进的地方,请发表评论。