【发布时间】:2021-09-17 17:32:42
【问题描述】:
我正在使用 Python 开发井字游戏(以提高我的 Python 技能),但遇到以下问题:我有一个类似下面的列表,根据是否全部确定玩家是否获胜垂直、水平或对角线的值都具有相同的值。
win_horizontal = [[board[0], board[1], board[2]], [board[3], board[4], board[5]], [board[6], board[7], board[8]]]
win_vertical = [[board[0], board[3], board[6]], [board[1], board[4], board[7]], [board[2], board[5], board[8]]]
win_diagonal = [[board[0], board[4], board[8]], [board[2], board[4], board[6]]]
所以目前我的逻辑如下:
result = False;
result = all(elem == mark for elem in win_horizontal[1])
if result :
print("All Elements in List are Equal")
else:
print("All Elements in List are Not Equal")
这有效,因为我只检查列表中的一个列表。但是,我不确定如何检查所有列表,以确定玩家是否在对角线、水平线或垂直线上获胜。我希望能够检查所有列表列表。
我尝试了以下
def win_check(board, mark):
win_horizontal = [[board[0], board[1], board[2]], [board[3], board[4], board[5]], [board[6], board[7], board[8]]]
win_vertical = [[board[0], board[3], board[6]], [board[1], board[4], board[7]], [board[2], board[5], board[8]]]
win_diagonal = [[board[0], board[4], board[8]], [board[2], board[4], board[6]]]
winner = [win_horizontal, win_vertical, win_diagonal]
result = False;
result = all(elem == mark for elem in any(winner))
if result :
print("All Elements in List are Equal")
else:
print("All Elements in List are Not Equal")
但我只是收到以下错误 TypeError: 'bool' object is not iterable,我认为它是从 any(winner)) 引发的
检查获胜条件的最佳方法是什么?
【问题讨论】:
标签: python python-3.x list