这是我的代码:
empty = ' '
board = [[empty, empty, empty], [empty, empty, empty], [empty, empty, empty]]
def print_board():
for idx, val in enumerate(board):
print(val)
def board_update(x,y,player):
board[x:y] = player;
game_is_running = True
player = 'x'
print_board()
while game_is_running:
if player == 'x':
print ('x turn')
ver = int(input('input vertical of x '))
hor = int(input('input horizontal of x '))
board_update(ver, hor, player)
player = 'o'
print_board()
if player == 'o':
print ('o')
vertical = int(input('input vertical of o '))
horizontal = int(input('input horizontal of o '))
每当我运行代码时,它只是放置这样的字母:
[' ', ' ', ' ']
x
[' ', ' ', ' ']
[' ', ' ', ' ']
如何让它看起来像这样:
[' ', ' ', ' ']
[' ', x , ' ']
[' ', ' ', ' ']
答案 0 :(得分:1)
这里的问题是在行
board[x:y] = player;
[x:y]
符号用于指定范围,而您真正需要的可能是
board[x][y] = player
通常您会收到错误,因为将单个值分配给某个范围会抛出TypeError
。在这种情况下,您将分配字符串,python将其视为字符列表。
答案 1 :(得分:0)
board[x:y]
正在切割语法。在您的情况下,您似乎尝试过board[1:1] = "x"
。让我们看看它的作用:
board[1:1]
指的是从索引1到索引1的列表部分(空白部分,但仍然是一部分):
['','',''], ['','',''], ['','','']
0 1 2 3
⇈
由于您将该切片设置为"x"
(并且字符串是序列),现在列表变为:
['','',''], 'x', ['','',''], ['','','']
0 1 2 3 4
您想要做的是访问列表中的第二个列表(board[1]
),以及该内部列表的第一个元素(board[1][1]
):
board[x:y] = player