我试图制作一个允许两个人玩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()吗?
答案 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
中使用它来创建一个板。
我让drawBoard
和playerX
接受董事会作为参数。然后我将我在main
创建的电路板传递给每个电路板。
我做了它,所以输入在用于索引之前转换为数字。