2016-08-29 50 views
0

我在閱讀'用Python發明自己的遊戲',並且正在嘗試創建一本書中的遊戲。雖然我的代碼在書中的代碼一致,我仍然得到一個錯誤:我得到的錯誤列表索引超出範圍

File "/Users/Rocky/reverso.py", line 251, in <module> 
    resetBoard(mainBoard) 
    File "/Users/Rocky/reverso.py", line 27, in resetBoard 
    board[x][y] = ' ' 
IndexError: list index out of range 

代碼:

def resetBoard(board): 
    for x in range(8): 
     for y in range(8): 
      board[x][y] = ' ' #This is line 27 


    board[3][3] = 'X' 
    board[3][4] = 'O' 
    board[4][3] = 'O' 
    board[4][4] = 'X' 

def getNewBoard(): 

    board = [] 
    for i in range(8): 
     board.append([' '] * 8) 

     return board 



    while True: # line 248 
      mainBoard = getNewBoard() 
      resetBoard(mainBoard) # This is line 251 
      playerTile, computerTile = enterPlayerTile() 
      showHints = False 
      turn = whoGoesFirst() 
      print('The ' + turn + ' will go first.') 
+2

請添加'getNewBoard'的代碼。 –

+0

我應該在哪裏添加它 –

+0

在問題中。點擊[編輯]。 –

回答

-1

您可以用這個代替初始化列表:

board = [[' ' for _ in range(8)] for _ in range(8)] 

它應該初始化一個8x8的2d列表(這將無誤地工作)。

此代碼的工作:在功能getNewBoard()

def resetBoard(board): 
    for x in range(8): 
     for y in range(8): 
      board[y][x] = ' ' 


    board[3][3] = 'X' 
    board[3][4] = 'O' 
    board[4][3] = 'O' 
    board[4][4] = 'X' 

def getNewBoard(): 
    return [[' ' for _ in range(8)] for _ in range(8)] 

while True: # line 248 
     mainBoard = getNewBoard() 
     resetBoard(mainBoard) # This is line 251 
     playerTile, computerTile = enterPlayerTile() 
     showHints = False 
     turn = whoGoesFirst() 
     print('The ' + turn + ' will go first.') 
+1

'board = [['* 8] * 8]'不會做你認爲它所做的事情,它會產生8個長度爲8個空格的字符串的列表,你不能分配一個字符串中的字符,所以嘗試'board [3] [3] ='X''會產生一個錯誤。 –

+0

是的,只是糾正了這一點。抱歉 –

0

Return語句縮進是不正確的。

相關問題