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

Python井字棋(Tic-Tac-Toe)代码:输入循环未触发,无法获取用户输入

井字棋enter_move函数无输入提示问题解决

核心原因

你定义了enter_move函数,但从未在代码中调用它,所以程序不会执行到输入逻辑,自然不会出现输入提示。

其他代码错误及修复

除了未调用函数,你的代码还有几处关键错误:

  • 落子占用判断逻辑错误:原代码中elif move not in [0] and move not in [1] and move not in [2]完全不符合需求,应该检查对应棋盘位置是否仍为数字(未被X/O占用)。
  • 赋值运算符错误:所有board[x][y] == "O"用了比较运算符==,应该改为赋值运算符=才能修改棋盘。
  • 遗漏move=5的处理:原代码未处理用户选择5的情况,需要补充判断。

修复后的完整代码

board = [["1", "2", "3"], ["4", "X", "6"], ["7", "8", "9"]]

def display_board(board):
    print("+-------+-------+-------+")
    print("|       |       |       |")
    print("|   " + board[0][0] + "   |   " + board[0][1] + "   |   " + board[0][2] + "   |")
    print("|       |       |       |")
    print("+-------+-------+-------+")
    print("|       |       |       |")
    print("|   " + board[1][0] + "   |   " + board[1][1] + "   |   " + board[1][2] + "   |")
    print("|       |       |       |")
    print("+-------+-------+-------+")
    print("|       |       |       |")
    print("|   " + board[2][0] + "   |   " + board[2][1] + "   |   " + board[2][2] + "   |")
    print("|       |       |       |")
    print("+-------+-------+-------+")

def enter_move(board):
    while True:
        try:
            move = int(input("Please pick a number within the range of squares (1-9): "))
        except ValueError:
            print("Error: please enter a valid integer!")
            continue
            
        if move < 1 or move > 9:
            print("Error: please pick a number 1 through 9!")
            continue
        
        # 转换move为棋盘坐标
        row = (move - 1) // 3
        col = (move - 1) % 3
        if board[row][col] in ["X", "O"]:
            print("Sorry, that square is already taken! Try another move.")
            continue
        
        # 落子
        board[row][col] = "O"
        break

# 调用函数:先显示棋盘,再获取用户输入
display_board(board)
enter_move(board)
# 再次显示棋盘,查看落子结果
display_board(board)

修复说明

  1. 添加函数调用:在代码末尾调用display_board(board)和enter_move(board),触发输入逻辑。
  2. 优化输入判断:增加try-except捕获非整数输入,避免程序崩溃。
  3. 简化坐标转换:用数学计算直接将1-9的数字转为棋盘行列索引,无需大量elif判断。
  4. 修正占用判断:检查对应棋盘位置是否为X/O,确保逻辑正确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 22:40:56