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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 15:52:49