NameError:全局名称“Player1_row”没有定义
问题描述:
我写了对AI这个井字游戏(我提高了AI现在):NameError:全局名称“Player1_row”没有定义
Matrix = [[0, 0, 0],
[0, 0, 0],
[0, 0, 0]]
Matrix_2 = [[" ", " ", " "],
[" ", " ", " "],
[" ", " ", " "]]
def turnX():
Player1_row = int(raw_input("P1 What row do you want?"))
Player1_row = Player1_row - 1
Player1_column = int(raw_input("P1 What column do you want?"))
Player1_column = Player1_column - 1
if Player1_row > Matrix:
turnX()
if Player1_column > Matrix:
turnX()
if (1 == Matrix[Player1_column][Player1_row] or 500 == Matrix[Player1_column][Player1_row]):
print "This is an invaild move!"
turnX()
else:
Matrix[Player1_column][Player1_row] = 1
Matrix_2[Player1_column][Player1_row] = "X"
def turnY():
global Player1_row
Player2_row = int(random.randint(1, boardX))
Player2_row = Player2_row - 1
Player2_column = int(random.randint(Player1_row, boardY))
Player2_column = Player2_column - 1
if (1 == Matrix[Player2_column][Player2_row] or 500 == Matrix[Player2_column][Player2_row]):
turnY()
else:
print "AI Turn:"
Matrix[Player2_column][Player2_row] = 500
Matrix_2[Player2_column][Player2_row] = "O"
但我收到此错误:
NameError: global name 'Player1_row' is not defined`.
我想让AI阻止玩家的最后一招。
答
Player1_row不是全局变量,而是函数turn_X的局部变量。
为了解决这个问题,可以在player__row中设置一个全局变量turn_X。
函数'turnX()'中的变量'Player1_row'是本地的。它在'turnX()'返回时立即被销毁,并且在'turnY()'中不可访问。你可能想在'turnX()'中加入'global Player1_row'。 – DyZ
Python给你一个堆栈跟踪显示你哪一行有问题。请张贴整个跟踪。 Python告诉你,但是你希望我们挖掘你的代码来找出问题所在?! – tdelaney