第二个 if 语句 returns 结果,第一个 if 语句没有

second if statement returns result, first if statement doesn't

在下面的代码中,当 check_result returns 为真时,我希望我的程序终止。 但是,当 check_result(p1) returns True print 语句打印时,但程序继续执行。

但是如果 check_result(p2) returns True,语句被打印并且程序终止。请帮我弄清楚为什么第一个不起作用 谢谢!

while game_on:

        p1_turn = int(input(f"Player 1, choose a number between 1 and 9\n"))
        matrix[p1_turn - 1] = "X"
        p1.append(p1_turn)
        place_mark(matrix)
        if check_result(p1):
            print("Player 1 wins")
            game_on = False

        p2_turn = int(input(f"Player 2, choose a number between 1 and 9\n"))
        matrix[p2_turn - 1] = "0"
        p2.append(p2_turn)
        place_mark(matrix)
        if check_result(p2):
            print("Player 2 wins")
            game_on = False

只是放一个 break 语句。 game_on 变量是不必要的。只需使用比 while True.

稍快的 while 1
while 1:
    p1_turn = int(input(f"Player 1, choose a number between 1 and 9\n"))
    matrix[p1_turn - 1] = "X"
    p1.append(p1_turn)
    place_mark(matrix)
    if check_result(p1):
        print("Player 1 wins")
        break

    p2_turn = int(input(f"Player 2, choose a number between 1 and 9\n"))
    matrix[p2_turn - 1] = "0"
    p2.append(p2_turn)
    place_mark(matrix)
    if check_result(p2):
        print("Player 2 wins")
        break
if check_result(p1):
    print("Player 1 wins")
    game_on = False

你看到这里有任何break声明吗? while 循环不会自行中断。

if check_result(p1):
    print("Player 1 wins")
    game_on = False
    break

您无论如何都可以用 break 语句完全替换此 game_on 变量:

if check_result(p1):
    print("Player 1 wins")
    break

if check_result(p2):
    print("Player 2 wins")
    break

如果您想更好地了解 break(也许 continue)的用法,请阅读 this

while game_on:
        p1_turn = int(input(f"Player 1, choose a number between 1 and 9\n"))
        matrix[p1_turn - 1] = "X"
        p1.append(p1_turn)
        place_mark(matrix)
        if check_result(p1):
            print("Player 1 wins")
            game_on = False
            break
        p2_turn = int(input(f"Player 2, choose a number between 1 and 9\n"))
        matrix[p2_turn - 1] = "0"
        p2.append(p2_turn)
        place_mark(matrix)
        if check_result(p2):
            print("Player 2 wins")
            game_on = False

只需添加 break 语句,如果玩家 1 获胜将执行该语句,它将 game_on 设置为 false 并终止循环。
您的代码适用于玩家 2 获胜的情况,因此这是唯一需要的更改