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

Board类to_strings方法修复及from_strings参数问题排查

修正Python Board类的四个核心问题

针对你遇到的Board类实现问题,以下是逐一修复方案及完整代码:

问题1:to_strings方法输出扁平化字符列表

修复方案:将网格中每一行的字符列表拼接为单个字符串,返回字符串列表而非扁平化字符。

问题2:无效输入断言错误格式不正确

修复方案:遍历输入行时记录行号,断言失败时抛出指定格式的错误信息,确保行号准确对应。

问题3:from_strings参数未正确初始化grid

修复方案:在构造器中先初始化默认网格,若传入from_strings则验证输入合法性后,将每行字符串转为字符列表替换默认网格。

问题4:确保to_strings与from_strings格式一致

修复方案:to_strings返回的字符串列表结构与from_strings输入完全匹配——每行对应一个字符串,长度与网格尺寸一致。


完整修正代码

# 定义合法字符集合(可根据实际需求调整)
VALID_CHARS = {'X', 'O', ' '}

class Board:
    def __init__(self, size=3, from_strings=None):
        self.size = size
        # 初始化默认空网格
        self.grid = [[' ' for _ in range(size)] for _ in range(size)]
        
        # 处理from_strings初始化参数
        if from_strings is not None:
            # 验证输入行数是否匹配网格尺寸
            assert len(from_strings) == size, f"expected {size} rows, got {len(from_strings)}"
            # 逐行验证并初始化网格
            for row_idx, row_str in enumerate(from_strings):
                # 验证行长度是否匹配网格尺寸
                assert len(row_str) == size, f"row {row_idx} has length {len(row_str)}, expected {size}"
                # 验证每个字符是否合法
                for char in row_str:
                    assert char in VALID_CHARS, f"invalid character in row {row_idx}"
                # 将字符串转为字符列表存入网格
                self.grid[row_idx] = list(row_str)
    
    def to_strings(self):
        # 将每行字符列表拼接为字符串,返回格式匹配的字符串列表
        return [''.join(row) for row in self.grid]

测试验证

# 测试双向格式一致性
input_rows = ["X O", " O ", "XXO"]
board = Board(size=3, from_strings=input_rows)
output_rows = board.to_strings()
print(output_rows)  # 输出: ['X O', ' O ', 'XXO'],与输入完全一致

# 测试无效输入报错
try:
    invalid_input = ["X O", "OXX", "X Z"]
    Board(from_strings=invalid_input)
except AssertionError as err:
    print(err)  # 输出: invalid character in row 2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 04:50:34