gpt4 book ai didi

Python 二维数组中的索引错误

转载 作者:太空宇宙 更新时间:2023-11-03 15:01:26 24 4
gpt4 key购买 nike

所以我正在制作一个涉及二维数组的游戏,我要求用户输入网格的高度和宽度,这是制作网格的代码

Grid=[['O'for x in range(gridS[0])]for y in range(gridS[1])]

我后来将 gridS[0] 和 1 更改为 gridX 和 Y

然后我尝试将玩家添加到网格中,再次询问用户有多少玩家(存储在可变对手中)正在玩,然后添加那么多玩家

            if opponents>0:
Grid[gridX-1][gridY-2]='P'
if opponents>1:
Grid[0][(gridY-2)]='P'
if opponents>3:
Grid[gridX-1][0]='P'

但是,在测试时,出现了以下错误:

>>> How many bots do you want to play against?
>>> 10
>>> Please enter a number between 0 and 3
>>> 2
2

Grid[gridX-1][gridY-2]='P'
IndexError: list assignment index out of range

最佳答案

问题是您的嵌套理解构造了一个维度“翻转”的嵌套数组。考虑:

>>> dims = (4, 2)
>>> GRID = [['0' for x in range(dims[0])] for y in range(dims[1])]
>>> GRID
[['0', '0', '0', '0'], ['0', '0', '0', '0']]

这通常被称为2X4“矩阵”。尽管这是一个危险信号,但它是一个符号问题。根本问题是您使用 gridX, gridY = dims 索引到第一个轴。所以:

>>> x, y = dims
>>> x
4
>>> len(GRID)
2
>>> GRID[x]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: list index out of range

为了使一切顺利,请使用以下理解:

 Grid=[['O'for y in range(gridS[1])]for x in range(gridS[0])]

换句话说,内部理解创建第二个轴,外部理解创建第一个轴。但你却以相反的方式思考。

关于Python 二维数组中的索引错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45065143/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com