我得到一个错误列表索引超出范围

2024-05-15 04:35:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在读《用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.')

Tags: 代码inpyboard游戏fordefline
2条回答

函数getNewBoard()中的返回语句缩进不正确

您可以使用以下方法初始化列表:

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

它应该初始化一个8x82d列表(它可以正常工作)

此代码适用于:

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.')

相关问题 更多 >

    热门问题