我的问题是关于第二次突破声明: 如果x == xstart和y == ystart: 破
所以这个break语句突破了while true循环的正确性?但是它会回到下一个最接近的循环(即while board [x] [y] = OtherTile :)但是由于这个条件不满足,它会回到原来的xdirection,ydirection循环?我只是想看看我的理解是否正确。
if board[xstart][ystart] not OnBoard(xstart, ystart) or board[xstart][ystart] != ' ':
return False
#temporarily set the tile on the board, but change it back to a blank before the end of this function
board[xstart][ystart] = tile
#Set computer tile
if tile == 'X':
OtherTile = 'O'
else:
OtherTile = 'X'
#empty list of tiles to flip
TilesToFlip = []
#this is a for loop for two variables. Each list of two represents a position away from the orignal spot
for xdirection, ydirection in [[1,0], [0,1], [-1,0], [0,-1], [1,-1], [1,1], [-1,1], [-1,-1]]:
#we set x and y to the original coordinates passed to us because we want to preserve the orignal values
x, y = xstart, ystart
x = x + xdirection
y = y + ydirection
#after the first iteration, check to see if the adjacent piece is on the board and if it's the OtherTile:
if isOnBoard(x,y) and board[x][y] == OtherTile:
x = x + xdirection
y = y + ydirection
#if the next piece is not on the board, go back to the for loop to test another direction
if not isOnBoard(x,y):
continue
while board[x][y] = OtherTile:
x = x + xdirection
y = y + ydirection
#we break here because if we had just continued it would have gone back to the while loop.
#since we're breaking, it goes back to the original for loop (if it goes off the board)
if not isOnBoard(x,y):
break
#it finishes with the while loop if it reaches a tile that is not the OtherTile (i.e. it's blank or it's the player's)
#so we check to see if it's the player's
if board[x][y] == tile:
#if it is the player's tile, then we go in the reverse direction, appending each tile to the TilesToFlip list
while True:
x = x - xdirection
y = y - ydirection
#when we reach the original tiles, we break (by then we have all the tiles that need to be flipped in store in the new list)
if x == xstart and y == ystart:
break
TilesToFlip.append([x,y])
答案 0 :(得分:2)
它只会打破while循环。循环将一直持续到x == xstart和y == ystart。
一旦满足该条件,它将继续在外部for循环中。