为什么我得到一个未定义的错误?

时间:2017-07-09 19:10:34

标签: python-3.x multidimensional-array

我试图制作一个允许两个人玩tic tac toe的程序。他们应该选择一行然后选择一列,然后将令牌放在该位置。我是多维列表的新手,我有点挣扎。这就是我到目前为止所做的:

def showBoard():
    board = [[0,0,0,],
             [0,0,0],
             [0,0,0]]    

    print("-------------")
    print('|',board[0][0], '|',board[0][1], '|',board[0][2],'|')
    print("|---+---+---|")
    print ('|',board[1][0], '|',board[1][1], '|',board[1][2],'|')
    print("|---+---+---|")
    print ('|',board[2][0], '|',board[2][1], '|',board[2][2],'|')
    print("-------------")


def playerX():

    row = input("Enter a row (0, 1, or 2) for player X: ")
    column = input("Enter a column (0 , 1, or 2) for player X: ")
    board[row][column] = "X"


def main():

    showBoard()
    playerX()



main()

但是它总是抛出错误builtins.NameError:name' board'没有定义。 我可以使用与我相似的代码吗?或者我需要以某种方式使用append()吗?

1 个答案:

答案 0 :(得分:2)

您的问题是您在board内定义drawBoard,然后尝试在playerX中使用它。范围内定义的变量(如函数)不能在该范围之外使用。如果您需要在其他地方使用该变量,请在全局范围内定义它,或者更好地将其作为参数传递:

def newBoard():
    # Create a new board, then return it
    #  so it can be used elsewhere. 
    return [[0,0,0],
            [0,0,0],
            [0,0,0]]   

def showBoard(board):
    print("-------------")
    print('|',board[0][0], '|',board[0][1], '|',board[0][2],'|')
    print("|---+---+---|")
    print ('|',board[1][0], '|',board[1][1], '|',board[1][2],'|')
    print("|---+---+---|")
    print ('|',board[2][0], '|',board[2][1], '|',board[2][2],'|')
    print("-------------")

def playerX(board):
    row = int(input("Enter a row (0, 1, or 2) for player X: ")) 
    column = int(input("Enter a column (0 , 1, or 2) for player X: ")) 

    board[row][column] = "X"

def main():
    board = newBoard() 

    showBoard(board)
    playerX(board)

main()

我改变了什么:

  • 我创建了一个newBoard函数来创建一个新板。然后我在main中使用它来创建一个板。

  • 我让drawBoardplayerX接受董事会作为参数。然后我将我在main创建的电路板传递给每个电路板。

  • 我做了它,所以输入在用于索引之前转换为数字。