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

Python3创建矩阵类属性及Map类print_map无输出问题排查

问题解决:Map类print_map方法无输出的修复

核心问题1:方法未执行

测试代码中dungeon.print_map只是获取了方法对象的引用,没有触发方法执行,必须添加括号调用方法:

dungeon.print_map()

核心问题2:矩阵循环与索引不匹配

你的_matrix是按**行(size_y)×列(size_x)**创建的,但print_map里的循环逻辑搞反了维度:

  • 外层循环遍历的是size_x(列数),但_matrix的长度是size_y(行数),当size_x > size_y时会直接抛出索引越界错误;
  • 即使维度相等,索引顺序_matrix[i][j]也会导致行列颠倒,打印出的地图是转置后的结果。

修正后的print_map方法可以用更简洁的方式遍历每行:

def print_map(self):
    for row in self._matrix:
        print("".join(row))
    return 0

也可以保留索引遍历的写法,调整循环顺序:

def print_map(self):
    for j in range(self._size_y):
        for i in range(self._size_x):
            print(self._matrix[j][i], end="")
        print()
    return 0

完整修正后的代码

class Map:
    def __init__(self, size_x, size_y) -> None:
        self._size_x = size_x
        self._size_y = size_y
        self._matrix = [["."] * size_x for _ in range(size_y)]

    @property
    def max_x(self):
        return self._size_x
    
    @property
    def max_y(self):
        return self._size_y
    
    def print_map(self):
        for row in self._matrix:
            print("".join(row))
        return 0

if __name__ == "__main__":
    map_sizes = [int(x) for x in input().split()]
    dungeon = Map(map_sizes[0], map_sizes[1])
    dungeon.print_map()  # 添加括号调用方法

内容的提问来源于stack exchange,提问作者Rafael Carro Gaudim

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 07:42:42