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

井字棋play_turn函数错误排查求助:无法正确执行落子逻辑

井字棋play_turn函数错误排查与修正

你的代码存在三个关键问题,导致无法实现预期功能:

  • 坐标合法性检查不完整:原代码只判断了x >= 3或y >= 3,但没处理x或y为负数的情况(比如x=-1、y=-2这类无效坐标),不符合题目中坐标0-2的要求。
  • 落子操作未执行就返回True:当格子为空时,elif row[x] == ""直接返回True,但此时还没把piece放到棋盘上,导致棋盘状态完全没变化,和预期结果不符。
  • 有效代码不可达:row[x] = piece写在了所有return语句之后,无论什么情况都不会被执行,这是典型的逻辑顺序错误。

修正后的代码

def play_turn(game_board: list, x: int, y: int, piece: str):
    # 先检查坐标是否在0-2的合法范围内
    if not (0 <= x <= 2 and 0 <= y <= 2):
        return False
    row = game_board[y]
    # 检查目标格子是否已被X或O占用
    if row[x] in ("X", "O"):
        return False
    # 执行落子操作
    row[x] = piece
    # 落子成功返回True
    return True

修正说明

  1. 完善坐标合法性判断,确保x和y都处于0到2的区间内(包含边界值)。
  2. 调整逻辑顺序:先排除所有无效情况(坐标非法、格子已占),确认合法后再执行落子,最后返回True,保证落子动作能被执行。
  3. 简化占用判断逻辑,用in ("X", "O")替代重复的或条件,代码更简洁。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 11:36:07