问题:编写一个名为Win的函数。该函数接收由3个列表组成的列表。函数检查是否存在8种可能的获胜条件中的任何一种。当3个正方形的水平、垂直或对角线包含相同符号(“X”或“O”)时,即为获胜条件。如果满足上述任一条件,函数返回True,否则返回False。
接受的列表为:
[“_”,”_”,”_”]
[“_”,”_”,”_”]
[“_”,”_”,”_”]
接受的列表为:
[“_”,”_”,”_”]
[“_”,”_”,”_”]
[“_”,”_”,”_”]
def Win(pl):
p1 = pl[0]
p2 = pl[1]
p3 = pl[2]
# 判断竖列相等
for i in range(3):
if (p1[i] == 'X' or p1[i] == 'O') and p1[i] == p2[i] and p1[i] == p3[i] :
return True
# 判断横列相等
for p in pl:
if (p[0] == 'X' or p[0] == 'O') and p[0] == p[1] and p[0] == p[2]:
return True
# 判断左交叉相等
if (p1[0] == 'X' or p1[0] == 'O') and p1[0] == p2[1] and p1[0] == p3[2]:
return True
# 判断右交叉相等
if (p1[2] == 'X' or p1[2] == 'O') and p1[2] == p2[1] and p1[2] == p3[0]:
return True
# 否则返回False
return False
a = ['X','O','X']
b = ['E','X','E']
c = ['A','E','X']
p = [a,b,c]
print(Win(p))