/ / zastąpienie kolumny i wiersza inną wartością - python

zastępowanie kolumny i wiersza inną wartością - python

Czy ktoś może mi powiedzieć, dlaczego tak jest board[x-1][y-1] == "x" nie wykonuje? Byłem w tym od jakiegoś czasu. Błąd, który dostaję, to: TypeError: "str" does not support item assignment. Chciałbym móc umieścić "x" w rzędzie i kolumnie wybranej przez gracza.

Oto kod:

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"

Jedno z ćwiczeń Codecademy ma podobną, choć nie identyczną linię kodu, ale nie wiem, dlaczego mój nie działa w tym przypadku.

Odpowiedzi:

1 dla odpowiedzi № 1

Próbujesz edytować ciąg znaków. Dzieje się tak dlatego, że zainicjalizowałeś 1-D nie 2-D lista.

Aby zainicjować 2-D listę, wykonaj to w następujący sposób:

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

Kiedy drukujesz tablicę, powinna wyglądać tak:

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

Wtedy twój kod będzie działał poprawnie


2 dla odpowiedzi nr 2
board[x-1][y-1] = "x"

Zarząd jest jedną listą wymiarową. Spójrz na to w ten sposób:

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

Prawdopodobnie chcesz:

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

Spróbuj tego:

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)