【发布时间】:2017-02-16 18:59:00
【问题描述】:
我正在尝试编写一个代码来确定井字游戏的获胜者。 (这是大学作业)
为此,我编写了以下函数:
这段代码只检查水平线,其余的我没有添加。我觉得这需要一些硬编码。
def iswinner(board, decorator):
win = True
for row in range(len(board)):
for col in range(len(board)):
if board[row][col] == decorator:
win = True
else:
win = False
break
其中“board”是一个大小为 n^2 的二维数组,“decorator”是“X”或“O”值
我希望完成的是函数循环遍历二维数组的行。然后循环遍历每一行中的值。如果该元素与“装饰器”匹配,则它继续并检查下一个,但如果不匹配,则它从第一个循环中断并进入下一行。它会这样做,直到在同一行中找到 n 个元素。然后它会给出一个布尔值 True 否则 False。
代码似乎没有这样做,即使我检查了下面的“板”,它也给了我一个“真”的输出
check_list = [['O', 'X', 'X'], ['O', 'X', 'O'], ['O', 'X', 'X']]
非常感谢!
最好, 赛义德
【问题讨论】:
-
如果部分代码看不懂,请告诉我
-
什么时候将
win设置为False?它总是True。而且逻辑听起来是错误的……缩进是错误的,你不返回win!这开始在您的代码中累积。 -
@Jean-FrançoisFabre 我更新了代码,不知何故该行丢失了
-
@Jean-FrançoisFabre 很抱歉出现缩进,现在已修复
-
装饰器是什么?您不需要连续 3 次来赢得井字游戏吗?根据一个单元格的价值,您如何获胜?
标签: python arrays loops boolean break