矩阵,指数超出范围

Lit*_*cas 1 python

我用以下代码声明了一个矩阵:

matrix = [[' ' for x in range(x1)] for x in range(y1)]
Run Code Online (Sandbox Code Playgroud)

但是当我尝试找到一个随机元素并使用以下代码更改它的值时:

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
Run Code Online (Sandbox Code Playgroud)

我得到一个IndexError.我试着写一些垃圾代码来退出函数,如果它运行到IndexError.它工作一次,然后它仍然会抛出错误.

注意,x1与函数中的x相同.y1和y也是如此.

我有什么问题吗?

Laf*_*los 7

你的指数排序错误.您应该访问它们

matrix[randomY][randomX]
Run Code Online (Sandbox Code Playgroud)

或改变理解的顺序.

matrix = [[' ' for y in range(y1)] for x in range(x1)]
Run Code Online (Sandbox Code Playgroud)

此外,正如Garrett在评论中指出的那样,randint()两端都是包容性的,所以你可能想要使用randint(0,x-1)randint(0,y-1).