Python 检查我的元组并更改给定值

Python 检查我的元组并更改给定值,python,list,indexing,tuples,Python,List,Indexing,Tuples,所以,我在做一个三元组的tic-tac-toe游戏。(3x3矩阵) 我的职能是: def do_位置(棋盘、玩家、位置): 我想用新值返回我的新板,如下所示: 董事会=((1,-1,0)、(1,0,-1)、(1,-1,0)) do_位置(板-1,5) ((1,-1,0),(1,-1,-1),(1,-1,0)) board是我的元组,player将是一个值(-1(对于0播放器)或1(对于X播放器)),position是我的元组位置,我想在其中放置int(-1或1) 我知道我必须把我的元组转换成列表

所以,我在做一个三元组的tic-tac-toe游戏。(3x3矩阵)

我的职能是: def do_位置(棋盘、玩家、位置): 我想用新值返回我的新板,如下所示:

董事会=((1,-1,0)、(1,0,-1)、(1,-1,0))

do_位置(板-1,5)

((1,-1,0),(1,-1,-1),(1,-1,0))

board是我的元组,player将是一个值(-1(对于0播放器)或1(对于X播放器)),position是我的元组位置,我想在其中放置int(-1或1)

我知道我必须把我的元组转换成列表,这样我才能达到我想要的位置,但我已经尝试了很多方法,我的输出仍然返回我的初始板,没有任何更改。 以下是我的一个尝试:

def do_position(board,player, position):

   newboard = ()

   position=[1,2,3,4,5,6,7,8,9]

   player = (-1,1)
    
    for p in position:
        board[position[p]-1] = player[p]
    
    for position,player in enumerate(board):
        if player == 1:
           board[position] = 1
        elif player == -1:
             board[position] = -1
return newboard

有人能提供一些帮助吗?

元组是不可变的,这意味着您不能更改元组的值。

到目前为止,你有3个选择--

  • 使用更改的值重新生成电路板
  • 将元组转换为列表,进行更改并转换回元组
  • 使用类似python的列表的可变集合
    board=[[1,-1,0],[1,0,-1],[1,-1,0]]
  • 备用工作代码:

    def do_position(board,player, position):
        position-=1
        row,col=position//3,position%3
        board[row][col]=player
        return board
    
    board = [[1,-1,0],[1,0,-1],[1,-1,0]]
    do_position(board, -1, 3)
    
    对于元组板:

    def tuple_to_list(board):
        return [list(x) for x in board]
    
    def list_to_tuple(board):
        return tuple([tuple(x) for x in board])
    
    def do_position(board,player, position):
        temp_board=tuple_to_list(board)
        position-=1
        row,col=position//3,position%3
        temp_board[row][col]=player
        return list_to_tuple(temp_board)
    
    board = ((1,-1,0),(1,0,-1),(1,-1,0))
    do_position(board, -1, 3)
    

    您能给出
    def do_位置(棋盘、玩家、位置):
    功能代码??您正在返回新棋盘。当你对newboard做了更改时???@akash没错!我没有!我需要一些东西来查看我的位置是否为0,以便我可以为玩家更改该位置(-1或1)检查答案是否满足您的需要谢谢@akash!只有一件事,我的董事会是一个元组。我需要把函数放进去,对吗?我希望这样做:>board=((1,-1,0),(1,0,-1,0),>do_position(board,-1,5)只要转换
    tuple-->列表-->tuple
    @CateC我已经更新了答案。如果没有问题,请核对正确答案谢谢!你帮了我很多!你能帮我再问一个问题吗?