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
相关产品推荐
相关产品推荐

