Може ли някой да ми каже защо е така 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)