![](/img/trans.png)
[英]Why does not the variable in the while loop, change the boolean from True to False?
[英]Setting variable to True does not exit while False loop
我正在使用 Python 制作井字游戲,我快完成了,但我遇到了一個 while 循環問題。 這是我用來檢查玩家是否擁有該功能的簡化版本。
def check_win(board, marker):
win = False
if board['A1'] == marker and board['B1'] == marker and board['C1'] == marker:
print(f'{marker} wins!')
win = True
return win
這是在我的代碼中。
player_win = False
while player_win == False:
# Player1's turn
board_dict = get_and_place_marker(board_dict, player1)
display_board(board_dict)
--> player_win = check_win(board_dict, player1)
# Player2's turn
board_dict = get_and_place_marker(board_dict, player2)
display_board(board_dict)
--> player_win = check_win(board_dict, player2)
在 check_win() 的第一個實例中,它確實將 player_win 分配給 True,但它不會退出循環。 它轉到 Player2 的代碼,然后在 Player2 獲勝時退出。 我在這里做錯了什么? player_win 被分配為 True 的第一個瞬間不應該退出循環嗎?
如果玩家 1 獲勝,您仍然給玩家 2 一個機會進行非獲勝移動,在這種情況下,循環繼續。 不會因為條件中的變量發生變化而在循環體的中間隱式評估條件。
不是讓兩個玩家在每次迭代中都輪流,而是更改代碼,以便只有一個玩家輪流,每次在玩家之間輪換。
from itertools import cycle
for player in cycle([player1, player2]):
board_dict = get_and_place_marker(board_dict, player)
if check_win(board_dict, player):
break
然后,您可以檢查player
的值,以查看循環退出后實際獲勝的情況。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.