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阻止玩家的最后一招。

+0

函数'turnX()'中的变量'Player1_row'是本地的。它在'turnX()'返回时立即被销毁,并且在'turnY()'中不可访问。你可能想在'turnX()'中加入'global Player1_row'。 – DyZ

+0

Python给你一个堆栈跟踪显示你哪一行有问题。请张贴整个跟踪。 Python告诉你,但是你希望我们挖掘你的代码来找出问题所在?! – tdelaney

Player1_row不是全局变量,而是函数turn_X的局部变量。

为了解决这个问题,可以在player__row中设置一个全局变量turn_X。