我用下面的代码声明了一个矩阵:
matrix = [[' ' for x in range(x1)] for x in range(y1)]
但是当我尝试找到一个随机元素并使用以下代码更改它的值时:
randomX = random.randint(0, x)
randomY = random.randint(0, y)
if matrix[randomX][randomY] == ' ':
try:
matrix[randomX][randomY] = 'G'
scr.addstr(randomX, randomY, matrix[randomX][randomY])
scr.refresh()
except IndexError:
return
我得到一个 IndexError。如果它运行到 IndexError,我试图只写一些垃圾代码来退出该函数。它工作一次,然后它仍然会抛出错误。
注意,x1与函数中的x相同。 y1 和 y 也是如此。
知道我做错了什么吗?
请您参考如下方法:
您的索引顺序错误。您应该通过以下方式访问它们
matrix[randomY][randomX]
或者改变理解顺序。
matrix = [[' ' for y in range(y1)] for x in range(x1)]
此外,正如 Garrett 在评论中指出的那样,randint() 在两端都包含在内,因此您可能希望使用 randint(0,x-1) 和 randint(0,y-1)。
