我正在编写一个基本的noughts并在Python 3.6中跨越游戏,我希望输出只打印True或False,但是我想出的代码来检查win状态:
def check_the_lot(board):
win = check_win_mid_hoz(board)
win = check_win_bttm_hoz(board)
win = check_win_top_hoz(board)
print (win)
只会覆盖之前的支票,只打印最后一张支票吗?我该如何解决这个问题?我不知道如何只打印真实或仅打印错误,而不是一次打印多个答案?
答案 0 :(得分:4)
win = check_win_mid_hoz(board) or check_win_bttm_hoz(board) or check_win_top_hoz(board)
答案 1 :(得分:0)
当使用any(map())
所有函数具有相同的签名(参数和输出)时,这是一个很好的解决方案。
def check(board):
checks = [
check_win_mid_hoz,
check_win_bttm_hoz,
check_win_top_hoz,
]
return any(map(lambda x: x(board), checks))
我们存储函数而不在列表中调用。 map()
为每个检查元素执行lambda
函数。此lambda
函数使用board
参数调用该函数。 any()
检查是否有任何元素的计算结果为真。