2014-03-27 2 views
0

누군가가 board[x-1][y-1] == "x"이 실행되지 않는 이유를 말해 줄 수 있습니까? 나는 잠시 동안 여기에 있었어. 내가 얻는 오류는 다음과 같습니다. TypeError: 'str' does not support item assignment. 플레이어가 선택한 행과 열에 "x"를 배치하고 싶습니다. Codecademy에서의 연습열과 행을 다른 값으로 바꿈

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" 

하나는 코드의 유사하지 않을 경우 동일한 라인을 가지고 있지만 광산이 경우 작동하지 않는 이유를 모르겠어요 :

여기에 코드입니다.

+0

글쎄, 보드 1 dimentional 목록, 그것은 '아무튼 두 가지 차원을 포함하고 있습니까? – Torxed

답변

1

문자열을 편집하려고합니다. 이는 1-D이 아닌 2-D 목록을 초기화했기 때문입니다. 당신이 당신의 보드를 인쇄 할 때

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

, 그것은 다음과 같아야합니다 :

['|___|', '|___|', '|___|'] 
['|___|', '|___|', '|___|'] 
['|___|', '|___|', '|___|'] 

그런 다음 코드가 잘

+0

당신은 "| ___ |" 방법? 1-D와 2-D 목록의 차이점은 무엇입니까? –

+0

@jasonadams, 3''| ___ | "'목록을 만들고 코드에서 3x3 보드를 얻으려면이 명령을 3 번 실행하십시오. – sshashank124

+0

@jasonadams, 1-D 목록은 다음과 같습니다.'[1 , 2,3,4,5,6,7,8,9]입니다. 반면에 2-D리스트는 다음과 같습니다 : [[1,2,3], [4,5,6], [7,8,9 ]]'기본적으로 목록에 나열됩니다. – sshashank124

2
작동합니다

는 다음과 같이를 수행 2-D 목록을 초기화하려면
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) 
관련 문제