Python如何获取函数输入board的原始定义字符串以处理特殊测试用例?
解决pretty_print函数的空棋盘场景问题
核心问题说明
你没办法从传入的board对象还原出它的原始生成表达式(比如[['A']*0]*4),因为Python在调用函数时,参数表达式会先被求值为最终的列表对象,函数只能拿到这个对象,完全丢失了表达式的上下文信息。比如[['A']*0]*4和[[], [], [], []]在函数看来是完全一样的结构,无法区分。
正确的解决思路:直接处理空列表场景
不需要纠结原始表达式,直接基于传入的board对象的结构来判断行数和列数,针对性处理空的情况即可通过隐藏测试用例:
- 行数为0的情况:当
board是[]时,直接处理空棋盘逻辑(比如不输出内容,或打印提示)。 - 列数为0的情况:当
board非空但所有子列表都是[]时,处理每行无元素的逻辑(比如输出对应行数的空行,或打印提示)。
示例代码实现
def pretty_print(board): # 处理行数为0的场景 if not board: # 可根据题目要求选择不输出或打印提示 return # 假设输入是规整棋盘(所有行长度一致) cols = len(board[0]) # 处理列数为0的场景 if cols == 0: # 输出对应行数的空行,或替换为提示文本 for _ in board: print() return # 正常棋盘的打印逻辑(以空格分隔字符为例) for row in board: print(' '.join(row))
补充说明
如果题目允许输出提示信息代替空内容,也可以把空场景的输出换成明确提示,比如:
- 行数为0时打印
"Board has 0 rows" - 列数为0时打印
"Board has 0 columns"
这样就能覆盖所有测试场景,包括隐藏的空棋盘用例。
内容的提问来源于stack exchange,提问作者vAlkanol
相关产品推荐
相关产品推荐

