簡體   English   中英

將變量設置為 True 不會退出而 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM