2017-10-19 82 views
0

我在Python 3.6中编写了一个基本的不存在和十字架游戏,我希望输出只打印True或False,但是我已经拿出代码来检查赢状态:Python检查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

顺便说一句:你不需要任何;在Python中! – mrCarnivore

+0

我为您提供了一个可轻松扩展的答案,因为它只需要将额外的功能(垂直线和对角线)添加到列表中。 – Adirio

回答

4
win = check_win_mid_hoz(board) or check_win_bttm_hoz(board) or check_win_top_hoz(board) 
+0

非常感谢您的帮助,非常感谢! – Variomatic

+0

如果答案对您有帮助,请接受我的回答(点击投票按钮下的检查符号) – mrCarnivore

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