/ / sostituendo colonna e riga con un altro valore - python

sostituendo colonna e riga con un altro valore - python

Qualcuno può dirmi perché è così board[x-1][y-1] == "x" non stai eseguendo? Sono stato a questo per un po 'ora. L'errore che ottengo è: TypeError: "str" does not support item assignment. Mi piacerebbe essere in grado di posizionare una "x" sulla riga e colonna che il giocatore sceglie.

Ecco il codice:

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"

Uno degli esercizi di Codecademy ha una linea di codice simile se non identica, ma non so perché la mia non lavori in questo caso.

risposte:

1 per risposta № 1

Stai provando a modificare una stringa. Questo perché inizializzato a 1-D non 2-D elenco.

Per inizializzare a 2-D lista, fallo come segue:

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

Quando stampi la tua scheda, dovrebbe assomigliare a questa:

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

Quindi il tuo codice funzionerà correttamente


2 per risposta № 2
board[x-1][y-1] = "x"

Board è una lista di dimensioni. Guardate in questo modo:

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

Quello che vorresti è probabilmente:

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

Prova questo:

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)