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

Python开发国际象棋记谱程序时如何识别0-0、0-0-0并替换为对应表述

解决方案

修改思路

  • 原代码逐字符遍历的逻辑无法识别「0-0」「0-0-0」这类多字符组合的记谱,因此需要先完成全局多字符子串替换,再处理单字符映射
  • 必须优先替换更长的0-0-0(长易位),再替换0-0(短易位),避免长易位的前半段被错误匹配为短易位
  • 用字典存储映射规则,替代堆叠的if判断,后续维护扩展更方便

修改后代码

def say(chess_line):
    # 优先处理多字符易位规则
    chess_line = chess_line.replace("0-0-0", " Castles queenside ")
    chess_line = chess_line.replace("0-0", " Castles ")
    # 单字符映射表
    char_mapping = {
        "x": " Takes ",
        "N": " Knight ",
        "B": " Bishop ",
        "R": " Rook ",
        "Q": " Queen ",
        "K": " King "
    }
    line_of_chess = ""
    for char in chess_line:
        line_of_chess += char_mapping.get(char, char)
    # 去除首尾多余空格
    return line_of_chess.strip()

效果验证

输入:say("0-0") → 输出:Castles
输入:say("0-0-0") → 输出:Castles queenside
输入:say("Qxf7+") → 输出:Queen Takes f7+

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 03:18:03