2017-08-04 14 views
-1

私のメソッドのエラーに関する小さな問題があります(クラスの中で)、私は現在、ボットができる最高の動きを整理したいAIに取り組んでいますが、このコードのビットで アサイグメントの前に参照されているローカル変数

def computerMove(self, tile, newBoard, legalMoves, isOnCorner): 
     legitMoves = self.getLegalMoves(self.board, tile) 
     for x, y in legitMoves: 
      if self.isOnCorner(x, y): 
       return [x, y] 
     highestPoints = -1 
     for x, y in legitMoves: 
      computerBoard = self.getComputerBoard(self.newBoard) 
      makeYourMove(computerBoard, tile, x, y) 
      points = countPoints(computerBoard)[tile] 
      if points > highestPoints: 
       highestPoints = points 
       bestMove = [x][y] 
     return bestMove 

が、エラー状態...それは私にエラーを伝え、 UnboundLocalError: local variable 'bestMove' referenced before assignment

+0

forループの前に値を指定する必要があります。なぜなら、if条件がfalseの場合、 'bestMove'には値が割り当てられておらず、関数は' None'を返すからです。 – ikreb

+0

更新をチェック! @ikreb – PythonGirl

答えて

2

ルックをbestMoveを返す:

for x, y in legitMoves: 
    computerBoard = self.getComputerBoard(self.newBoard) 
    makeYourMove(computerBoard, tile, x, y) 
    points = countPoints(computerBoard)[tile] 
    if points > highestPoints: 
     highestPoints = points 
     bestMove = [x][y] 
return bestMove 

何がない場合の場合はpoints > highestPointsとなります(これは決して0を返す可能性が高いので、を返します)、bestMoveは決して定義されません。bestMove = [x][y]bestMove = [x, y]になるはずです。

forループの前にbestMove = Noneを入れてから、Noneを呼び出しコードで処理してください。

+0

あなたが何を意味しているかはかなり理解していますが、うまくいきません。私の更新をチェック! – PythonGirl

+0

* "まだ動作しません" *新しいエラーは何ですか? –

+0

ああ、私は現在解決していると思います。 ty – PythonGirl

関連する問題