/ / замяна на колона и ред с друга стойност - python

заместване на колона и ред с друга стойност - python

Може ли някой да ми каже защо е така board[x-1][y-1] == "x" не се изпълнява? Досега съм бил в това. Грешката, която получавам, е: TypeError: "str" does not support item assignment. Бих искал да мога да поставя "x" в реда и колоната, който играчът избере.

Ето кода:

import random

board = []

for i in range(3):
board.append("|___|"*3)
for row in board:
print row

x = int(raw_input("x: "))
y = int(raw_input("y: "))

board[x-1][y-1] = "x"

Една от упражненията на Codecademy има подобна, ако не идентична линия на код, но аз не знам защо мината не работи в този случай.

Отговори:

1 за отговор № 1

Опитвате се да редактирате низ. Това е така, защото сте инициализирали a 1-D не 2-D списък.

За да инициализирате a 2-D направете следното:

for i in range(3):
board.append(["|___|"]*3)   # Note the [] around the "|___|"

Когато отпечатвате дъската си, тя трябва да изглежда така:

["|___|", "|___|", "|___|"]
["|___|", "|___|", "|___|"]
["|___|", "|___|", "|___|"]

Тогава вашият код ще работи добре


2 за отговор № 2
board[x-1][y-1] = "x"

Бордът е един списък с измерения. Погледнете го по следния начин:

board[0] = "|___||___||___|"

Това, което искате, вероятно е:

board[0] = ["|___|", "|___|", "|___|"]

Опитайте тази:

import random

board = []

for i in range(3):
if len(board)-1 < i: board.append([])
board[i] = []
columns = board[i]
for colNum in range(3):
columns.append("|___|")
board[i] = columns

for row in board:
print(row)

x = int(raw_input("x: "))
y = int(raw_input("y: "))

board[x-1][y-1] = "| x |"

# To verify the change:
for row in board:
print(row)