【发布时间】:2026-01-20 05:55:02
【问题描述】:
我正在处理一个练习题,我们要在函数参数中输入一个列表,这将代表一个井字棋盘,并返回棋盘的结果。即 X 胜、O 胜、Draw 或 None(空字符串)。
我已经解决了,但我想知道是否有一种方法可以将我的算法操纵成一个循环,因为建议使用循环来比较主对角线的每个元素与所有 元素与其相交的行和列,然后检查两条对角线。我是 python 新手,所以我的解决方案可能比它需要的长一点。如何实现一个循环来检查井字游戏的结果?
def gameState (List):
xcounter=0
ocounter=0
if List[0][0]==List[0][1] and List[0][0]==List[0][2]:
return List[0][0]
elif List[0][0]==List[1][0] and List[0][0]==List[2][0]:
return List[0][0]
elif List[0][0]==List[1][1] and List[0][0]==List[2][2]:
return List[0][0]
elif List[1][1]==List[1][2] and List[1][1]==List[1][0] :
return List[1][1]
elif List[1][1]==List[0][1] and List[1][1]==List[2][1]:
return List[1][1]
elif List[1][1]==List[0][0] and List[1][1]==List[2][2]:
return List[1][1]
elif List[2][2]==List[2][0] and List[2][2]==List[2][1]:
return List[2][2]
elif List[2][2]==List[1][2] and List[2][2]==List[0][2]:
return List[2][2]
elif List[2][2]==List[1][1] and List[2][2]==List[0][0]:
return List[2][2]
for listt in List:
for elm in listt:
if elm=="X" or elm=="x":
xcounter+=1
elif elm=="O" or elm=="o":
ocounter+=1
if xcounter==5 or ocounter==5:
return "D"
else:
return ''
【问题讨论】:
-
您是否尝试过使用循环?你有什么问题?此外,
List是一个错误的变量名,因为它也是 Python 内置函数,在某些时候使用这样的内置函数会给您带来问题。 -
这是“工作”代码吗?如果是这样,请在Code Review 询问
-
看起来您在使用嵌套的
for语句时已经实现了一个循环。 -
@sudo_coffee 是的!但是建议使用循环将主对角线的每个元素与其相交的行和列的所有元素进行比较,然后检查两个对角线。坦率地说,这些指示让我迷失了方向。我不明白我们如何使用循环,因为我们每次总是处于非常不同的状态
标签: python loops for-loop while-loop