You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

文本迷宫游戏矩阵元素替换异常问题求助

问题分析与解决

你的问题根本不在dig(x,y)函数,而是**fill_maze()创建迷宫矩阵时,所有行都指向了同一个列表对象**。

问题根源

看这段fill_maze代码:

def fill_maze():
    row = []
    for i in range(row_len):
        row.append("#")
    for i in range (col_len):
        matrix.append(row)

你先创建了一个row列表,然后循环5次把这个同一个row添加到matrix里。这意味着matrix里的5个元素都是对同一个列表的引用——修改其中任何一行,其他行都会跟着变,因为它们本质上是同一个东西。

修复方案

修改fill_maze函数,每次循环都创建一个新的row列表,而不是重复添加同一个:

def fill_maze():
    for i in range(col_len):
        row = []
        for j in range(row_len):
            row.append("#")
        matrix.append(row)

或者用更简洁的列表推导式:

def fill_maze():
    global matrix
    matrix = [["#" for _ in range(row_len)] for _ in range(col_len)]

验证dig函数

修复fill_maze后,你的原始dig函数其实可以正常工作,甚至可以简化成这样(因为列表是可变对象,修改row里的元素会直接反映到matrix中,不需要重新赋值):

def dig(x, y):
    matrix[y][x] = "@"

测试结果

运行修改后的代码,调用dig(2,3)后,输出会符合你的预期:

#####
#####
#####
##@##
#####

内容的提问来源于stack exchange,提问作者user25371139

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 05:07:06