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

如何修复Python实现的国际象棋骑士移动验证函数错误

骑士移动验证函数修复代码及说明

你现有代码存在以下核心问题:

  • 入参设计不符合需求:需求要求函数接收2个坐标字符串参数(如'b1'、'a3'),你当前定义了4个参数,且函数内部直接把入参变量覆盖为字典和集合,完全没有使用输入的坐标数据
  • 坐标转数值逻辑错误:你将x2、y2定义为集合,无法实现字符到数字的映射,也没有对输入的坐标字符串做拆分,无法单独获取列对应的字母、行对应的数字
  • 差值计算逻辑没有基于实际坐标值,自然无法得到正确结果

修复后的完整代码如下:

def knight_validator(start: str, end: str) -> bool:
    # 定义列字母到数值的映射,支持大小写输入
    col_map = {'A':1, 'B':2, 'C':3, 'D':4, 'E':5, 'F':6, 'G':7, 'H':8}
    # 拆分起点的列和行,转成可计算的数值
    start_col = col_map[start[0].upper()]
    start_row = int(start[1])
    # 拆分终点的列和行,转成可计算的数值
    end_col = col_map[end[0].upper()]
    end_row = int(end[1])
    # 计算横纵坐标的绝对差值
    dx = abs(start_col - end_col)
    dy = abs(start_row - end_row)
    # 骑士走日的规则判断:差值组合为2和1即符合要求
    return (dx == 2 and dy == 1) or (dx == 1 and dy == 2)

# 测试示例
print(knight_validator('b1', 'a3')) # 输出 True
print(knight_validator('b1', 'b3')) # 输出 False

如果需要直接打印结果而非返回布尔值,把return行替换为对应print语句即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 20:24:03