繁体   English   中英

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

[英]Check my tuple of tuples and change the given value

所以,我正在做井字游戏,有 3 个元组。 (3x3 矩阵)

我的功能是: def do_position(board, player, position): 我想用新值返回我的新板,像这样:

板 = ((1,-1,0),(1,0,-1),(1,-1,0))

do_position(board, -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 个选择——

  1. 使用更改的值重新生成板。
  2. 将元组转换为列表,进行更改并转换回元组
  3. 使用 python 的可变集合,如 list 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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM