python中的2D列表更改每个列表中相同位置的值

python中的2D列表更改每个列表中相同位置的值,python,list,tic-tac-toe,Python,List,Tic Tac Toe,这应该是一个抽签游戏。但是,当用户在黑板上输入他们想要的位置时,会用零/叉填充整个列,忽略行。我知道1D列表会更容易,但我的Comp-Sci老师希望我使用2D列表,他不知道为什么这样做。 def boardprint(): array_board = board print( " _ _ _\n"+ "|"+(array_board[0][0])+"|"+(array_board[0][1])+"|"+(array_board[0][2])+"|\n"+ "|_|_|_|\n"+

这应该是一个抽签游戏。但是,当用户在黑板上输入他们想要的位置时,会用零/叉填充整个列,忽略行。我知道1D列表会更容易,但我的Comp-Sci老师希望我使用2D列表,他不知道为什么这样做。

def boardprint():
    array_board = board
    print(
" _ _ _\n"+
"|"+(array_board[0][0])+"|"+(array_board[0][1])+"|"+(array_board[0][2])+"|\n"+
"|_|_|_|\n"+
"|"+(array_board[1][0])+"|"+(array_board[1][1])+"|"+(array_board[1][2])+"|\n"+
"|_|_|_|\n"+
"|"+(array_board[2][0])+"|"+(array_board[2][1])+"|"+(array_board[2][2])+"|\n"+
"|_|_|_|\n"
        )




board=[[" "]*3]*3
move=0


boardprint()
board_full=False
won=False
while (board_full!=True and won!=True):
    move+=1
    move_success=False
    while (move_success==False):
        row_position=int(input("In which row would you like to place a cross?"))
        col_position=int(input("In which column would you like to place a cross?"))
        if (board[col_position][row_position]==" "):
            (board[col_position][row_position])="x"
            move_success=True
        else:
            print("Try again, that position is full")
        boardprint()
    if (move>=9):
        board_full=True
    move+=1
    move_success=False
    while (move_success == False):
        row_position=int(input("In which row would you like to place a nought?"))
        col_position=int(input("In which column would you like to place a nought?"))
        if (board[col_position][row_position]==" "):
            board[col_position][row_position]="o"
            move_success=True
        else:
             print("Try again, that position is full")
        boardprint()

应该修复您的问题,但是您的原始问题源于一些深度复制与浅层复制问题,您应该真正使用red Dan的链接,因为它解决了您的确切问题

尽管你可以考虑使用用户输入的值- 1的位置,他们打算制造的TIC TAC两个标记。例如,如果我输入1,1,我可能希望将我的标记放在这里:

from copy import deepcopy
board = [deepcopy([' ' for x in range(3)]) for x in range(3)]
这里不一定:

 _ _ _
|X| | |
|_|_|_|
| | | |
|_|_|_|
| | | |
|_|_|_|

不过这只是我的想法,你的方法很好。

Google“深度复制和浅层复制python”。应该会有帮助。
 _ _ _
|X| | |
|_|_|_|
| | | |
|_|_|_|
| | | |
|_|_|_|
 _ _ _
| | | |
|_|_|_|
| |x| |
|_|_|_|
| | | |
|_|_|_|