为什么我总是收到 'method' 类型的参数不可迭代?
Why do I keep getting argument of type 'method' is not iterable?
我正在尝试制作一个国际象棋程序,但无法通过不断返回错误的部分。我已经检查了代码,但找不到它有什么问题。它一直说“'method' 类型的参数不可迭代”。网上说是括号错误,可是我怎么也找不到。
if len(userClick)==2: # if its player click number 2
move = chessEngine.Move(userClick[0],userClick[1],SoG.board)
print(move.chessNotation())
if move in legalMoves: # this is where the error occurs
SoG.makingMove(move)
moveMade = True
selectedSquare = () # reset square selected
userClick = [] # reset user clicks
我这里有一些其他代码,
def legalMoves(self): # possible moves
return self.possibleMoves()
def possibleMoves(self):
moves = [] #Move((6,4),(4,4),self.board)
for r in range(len(self.board)): # number of rows
for c in range(len(self.board[r])): # number of columns in a row
colourOfTurn = self.board[r][c][0]
if (colourOfTurn == 'b' and not self.whiteMove) and (colourOfTurn == 'w' and self.whiteMove):
piece = self.board[r][c][1]
if piece == 'P': # pawns
self.pawnMoves(r,c,moves)
elif piece == 'R': # rooks
self.rookMoves(r,c,moves)
#elif piece == 'N': # knights
# self.knightMoves(r,c,moves)
#elif piece == 'B': # bishop
# self.bishopMoves(r,c,moves)
#elif piece == 'Q': # queen
# self.queenMoves(r,c,moves)
#elif piece == 'K': # king
# self.kingMoves(r,c,moves)
return moves
你必须用括号调用 legalMoves
,像这样:
if move in legalMoves():
我正在尝试制作一个国际象棋程序,但无法通过不断返回错误的部分。我已经检查了代码,但找不到它有什么问题。它一直说“'method' 类型的参数不可迭代”。网上说是括号错误,可是我怎么也找不到。
if len(userClick)==2: # if its player click number 2
move = chessEngine.Move(userClick[0],userClick[1],SoG.board)
print(move.chessNotation())
if move in legalMoves: # this is where the error occurs
SoG.makingMove(move)
moveMade = True
selectedSquare = () # reset square selected
userClick = [] # reset user clicks
我这里有一些其他代码,
def legalMoves(self): # possible moves
return self.possibleMoves()
def possibleMoves(self):
moves = [] #Move((6,4),(4,4),self.board)
for r in range(len(self.board)): # number of rows
for c in range(len(self.board[r])): # number of columns in a row
colourOfTurn = self.board[r][c][0]
if (colourOfTurn == 'b' and not self.whiteMove) and (colourOfTurn == 'w' and self.whiteMove):
piece = self.board[r][c][1]
if piece == 'P': # pawns
self.pawnMoves(r,c,moves)
elif piece == 'R': # rooks
self.rookMoves(r,c,moves)
#elif piece == 'N': # knights
# self.knightMoves(r,c,moves)
#elif piece == 'B': # bishop
# self.bishopMoves(r,c,moves)
#elif piece == 'Q': # queen
# self.queenMoves(r,c,moves)
#elif piece == 'K': # king
# self.kingMoves(r,c,moves)
return moves
你必须用括号调用 legalMoves
,像这样:
if move in legalMoves():