Skip to main content
 首页 » 编程设计

python之矩阵,索引超出范围

2025年05月04日13telwanggs

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

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)。