python-3.x 在井字游戏中赢签

rqdpfwrv  于 2023-01-18  发布在  Python
关注(0)|答案(1)|浏览(146)

在这个井字游戏板中我想看看是X还是O赢了,我用的公式是for循环,我只是开始对行做这个,它没有给我想要的答案,我还能怎么写呢?

def win_check(board, mark):
    for mark in board:
        return (board[1:4] == board[4:7] == board[7:] == mark)

在我执行了上面的步骤之后,我检查是X还是O赢了,如下所示:

>>> win_check(board, 'O')
False

这应该是真的,因为我的棋盘有第7、8、9行是O。

3htmauhk

3htmauhk1#

win_check中的return函数意味着所有条件必须同时满足才能获胜,即board[1:4] == mark AND board[4:7] == mark AND board[7:] == mark。这将需要一个棋盘上都覆盖有相同的标记。您需要OR条件,因此您的代码应该如下:

def win_check(board, mark):
    for mark in board:
        win = (all(mark == i for i in board[1:4]) or all(mark == i for i in board[4:7]) or all(mark == i for i in board[7:])
    return win

还要注意的是,我已经把return语句移出了for循环。你不希望每次循环都返回。另外,你也不用像现在这样测试同一个元素的列表。使用all方法

相关问题