Python Tic Tac Toe位置已被占用

Python Tic Tac Toe位置已被占用,python,Python,我正在用Python在两个人类玩家之间制作Tic-Tac-Toe,我在让我的代码意识到一个位置已经被占用时遇到了问题 我列出了两份清单: board = [1, 2, 3, 4, 5, 6, 7, 8, 9] 现在我正在定义一个允许玩家移动的功能,但就我的一生而言,我无法让它拒绝一个已经被占用的位置 if next_player(player) == 2: print("Current Player: X") else:

我正在用Python在两个人类玩家之间制作Tic-Tac-Toe,我在让我的代码意识到一个位置已经被占用时遇到了问题

我列出了两份清单:

board = [1, 2, 3,
         4, 5, 6,
         7, 8, 9]
现在我正在定义一个允许玩家移动的功能,但就我的一生而言,我无法让它拒绝一个已经被占用的位置

    if next_player(player) == 2:
        print("Current Player: X")
    else:
        print("Current Player: O")
    response = input("Enter a number between 1 and 9: ")
    if response.isnumeric():
        input_response = int(response)
        if input_response == 0 or input_response > 9:
            print("That number is not valid")
        elif 1 <= input_response <= 9:
            for i in range(len(board)):
                if input_response == int(i + 1):
                    board[i] = player
    if not response.isnumeric():
        print("Please Enter a Valid Input!")
        pass
如果下一个玩家(玩家)==2:
打印(“当前播放器:X”)
其他:
打印(“当前播放器:O”)
响应=输入(“输入一个介于1和9之间的数字:”)
if response.isnumeric():
输入\响应=int(响应)
如果输入响应==0或输入响应>9:
打印(“该数字无效”)

elif 1只需检查线路板[i]的值是否不是X或O(即未占用)

不过,我建议您使用二维数组而不是一维数组来表示网格。以下是一些可能对您有所帮助的链接


也许您可以通过在列表中包含带有数字和布尔值的元组来创建列表。让我解释一下

Board= [(1,False),(2,False),(3,False).. so on  ]

if not board[I][1] :
    board[I] = Player
    board[I][1] = True

我认为这应该行得通

在我看来,
board
中的值
1..9
没有任何用处。使用
None
之类的东西作为哨兵可能会更容易。我没有看到您在检查当前电路板时提到的代码。如果你不能让它工作,它肯定在那里的某个地方有错误。所以这个代码导致每个输入读取到该点已经被占用。我的代码还是你的代码?您的代码根本不检查玩家是否已经标记了该点。如果您在代码中插入我的代码,它将检查该点是否已标记
if board[i] == "Nobody":
    board[i] = player
else:
    print("Spot already occupied!")
Board= [(1,False),(2,False),(3,False).. so on  ]

if not board[I][1] :
    board[I] = Player
    board[I][1] = True