Python检查Win状态

时间:2017-10-19 11:46:29

标签: python

我正在编写一个基本的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)

只会覆盖之前的支票,只打印最后一张支票吗?我该如何解决这个问题?我不知道如何只打印真实或仅打印错误,而不是一次打印多个答案?

2 个答案:

答案 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()检查是否有任何元素的计算结果为真。