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

如何在嵌套列表中替换数字为指定符号以生成棋盘样式?

解决棋盘字符替换与打印问题

你的代码有几个关键问题导致替换失效:

  • chess里的每个子列表只存了一个完整的空格分隔字符串,不是单个字符的列表,直接遍历子列表索引只能拿到整个字符串,没法逐个处理数字。
  • 循环索引逻辑错误:if n[j] == "0"里的n[j]是整个chess的第j个子列表,不是要替换的数字字符。
  • 只处理了0的替换,漏掉了1→o、2→*的逻辑,也没把替换后的字符重新拼接成棋盘行。

修正后的代码

chess = [
    ["0 1 0 1 0 1 0 1 "],
    ["1 0 1 0 1 0 1 0 "],
    ["0 1 0 1 0 1 0 1 "],
    ["0 0 0 0 0 0 0 0 "],
    ["0 0 0 0 0 0 0 0 "],
    ["2 0 2 0 2 0 2 0 "],
    ["0 2 0 2 0 2 0 2 "],
    ["2 0 2 0 2 0 2 0 "]
]

# 定义替换规则字典,清晰直观
replace_map = {"0": ".", "1": "o", "2": "*"}

def prt(board):
    for row in board:
        # 取出子列表里的唯一字符串,按空格分割成数字列表(过滤掉末尾空字符串)
        parts = row[0].split()
        # 逐个替换字符,再用空格拼接成一行
        replaced_row = " ".join([replace_map[num] for num in parts])
        print(replaced_row)

prt(chess)

代码说明

  1. 用replace_map字典统一管理替换规则,后续修改规则只需调整字典,更易维护。
  2. 遍历每一行时,通过row[0]取出子列表中的字符串,split()方法按空格分割成单个数字字符串(自动忽略原字符串末尾的多余空格)。
  3. 用列表推导式遍历每个数字,通过字典映射替换为目标字符,再用" ".join()拼接成符合格式的棋盘行,最后打印输出。

运行输出

. o . o . o . o
o . o . o . o .
. o . o . o . o
. . . . . . . .
. . . . . . . .
* . * . * . * .
. * . * . * . *
* . * . * . * .

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 09:31:35