Python检查Win

2024-09-28 19:29:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用python3.6编写一个基本的noughts和crosss游戏,我希望输出只打印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)

只覆盖以前的检查,只打印最后一个?我该怎么解决这个问题?我不知道怎么一次打印出正确或错误的答案,而不是多个答案?你知道吗


Tags: the答案代码boardfalsetrue游戏状态
2条回答

当所有函数都具有相同的签名(参数和输出)时,使用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()检查是否有任何元素的计算结果为true。你知道吗

win = check_win_mid_hoz(board) or check_win_bttm_hoz(board) or check_win_top_hoz(board)

相关问题 更多 >