gpt4 book ai didi

python - 即使嵌套 if 条件失败后如何继续执行剩余部分

转载 作者:太空宇宙 更新时间:2023-11-03 14:57:13 25 4
gpt4 key购买 nike

我只是想验证一个 tic tac toe 板,其值在列表列表中。

board = ([1, 2, 0], [2, 1, 0], [2, 1, 2])


def print_winner(variable):
if variable == 1:
return print("Winner of this board is Player1")
else:
return print("Winner of this board is Player2")


def interpret(game_board):
if game_board[0][0] != 0:
if game_board[0][1] and game_board[0][2] == game_board[0][0]:
print(print_winner(game_board[0][0]))
elif game_board[1][0] and game_board[2][0] == game_board[0][0]:
print(print_winner(game_board[0][0]))
elif game_board[1][1] and game_board[2][2] == game_board[0][0]:
print(print_winner(game_board[0][0]))
elif game_board[0][1] != 0:
if game_board[1][1] and game_board[2][1] == game_board[0][1]:
print(print_winner(game_board[0][0]))
elif game_board[0][2] != 0:
if game_board[1][2] and game_board[2][2] == game_board[0][2]:
print(print_winner(game_board[0][0]))
elif game_board[1][2] and game_board[2][0]:
print(print_winner(game_board[0][0]))
elif game_board[1][0] != 0:
if game_board[1][1] and game_board[1][2] == game_board[1][0]:
print(print_winner(game_board[0][0]))
elif game_board[2][0] != 0:
if game_board[2][1] and game_board[2][2] == game_board[2][0]:
print(print_winner(game_board[0][0]))
else:
print("No Winner")


interpret(board)

上面代码的问题是,一旦所有第一个嵌套 if 语句失败,我不知道如何指示我的程序继续执行剩余的代码。因此我的代码没有给出任何输出。预期输出为“No Winner”

最佳答案

第一个问题是您错误地使用了。您需要在 的任一操作数上指定条件。例如:

if game_board[0][1] == game_board[0][0] and game_board[0][2] == game_board[0][0]  

或者

if game_board[0][1] == game_board[0][2] == game_board[0][0] 

而不是:

if game_board[0][1] and game_board[0][2] == game_board[0][0]

但是,您也可以使用集合并检查它是否只包含一个数字:

if len({game_board[0][0], game_board[0][1], game_board[0][2]}) == 1:

实际问题

how to instruct my program to continue with the remaining piece of code once all my first nested if statements failed

其实很简单。使用普通的 if 并在满足一个条件时return

加上一些其他改进(您总是打印 game_board[0][0]),它看起来像这样:

def interpret(game_board):
if game_board[0][0] != 0:
if len({game_board[0][0], game_board[0][1], game_board[0][2]}) == 1:
return print(print_winner(game_board[0][0]))
elif len({game_board[0][0], game_board[1][0], game_board[2][0]}) == 1:
return print(print_winner(game_board[0][0]))
elif len({game_board[0][0], game_board[1][1], game_board[2][2]}) == 1:
return print(print_winner(game_board[0][0]))
if game_board[0][1] != 0:
if len({game_board[0][1], game_board[1][1], game_board[2][1]}) == 1:
return print(print_winner(game_board[0][1]))
if game_board[0][2] != 0:
if len({game_board[0][2], game_board[1][2], game_board[2][2]}) == 1:
return print(print_winner(game_board[0][2]))
elif len({game_board[0][2], game_board[1][1], game_board[2][0]}) == 1:
return print(print_winner(game_board[0][2]))
if game_board[1][0] != 0:
if len({game_board[1][0], game_board[1][1], game_board[1][2]}) == 1:
return print(print_winner(game_board[1][0]))
if game_board[2][0] != 0:
if len({game_board[2][0], game_board[2][1], game_board[2][2]}) == 1:
return print(print_winner(game_board[2][0]))
return print("No Winner")

这是有效的,因为 print 返回 None 并打印到 stdout

关于python - 即使嵌套 if 条件失败后如何继续执行剩余部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45443381/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com