python九宫格判断胜利条件

问题:编写一个名为Win的函数。该函数接收由3个列表组成的列表。函数检查是否存在8种可能的获胜条件中的任何一种。当3个正方形的水平、垂直或对角线包含相同符号(“X”或“O”)时,即为获胜条件。如果满足上述任一条件,函数返回True,否则返回False。

接受的列表为:
[[“_”,”_”,”_”]
[“_”,”_”,”_”]
[“_”,”_”,”_”]]

def checkWin():
  a=[]
  b=[]
  c=[]
  if a[0]==a[1]==a[2]:
    return True
  if a[0]==b[0]==c[0]:
    return True
  if b[0]==b[1]==b[2]:
    return True
  if c[0]==c[1]==c[2]:
    return True
  if a[1]==b[1]==c[1]:
    return True
  if a[2]==b[2]==c[2]:
    return True
  if a[0]==b[1]==c[2]:
    return True
  if c[0]==b[1]==a[2]:
    return True
  else:
    return False

上述代码报错:checkWin() takes 0 positional arguments but 1 was given

checkWin 函数要接受一个列表为参数,你要先判断包含相同的符号不是“_”才行,不能三个“_”也返回True

你题目的解答代码如下:

def checkWin(li):
  a=li[0]
  b=li[1]
  c=li[2]
  if a[0]!='_' and a[0]==a[1]==a[2]:
    return True
  if a[0]!='_' and a[0]==b[0]==c[0]:
    return True
  if b[0]!='_' and b[0]==b[1]==b[2]:
    return True
  if c[0]!='_' and c[0]==c[1]==c[2]:
    return True
  if a[1]!='_' and a[1]==b[1]==c[1]:
    return True
  if a[2]!='_' and a[2]==b[2]==c[2]:
    return True
  if a[0]!='_' and a[0]==b[1]==c[2]:
    return True
  if c[0]!='_' and c[0]==b[1]==a[2]:
    return True
  else:
    return False

print(checkWin([
    ['_','_','_'],
    ['_','X','O'],
    ['_','X','O']
]))

print(checkWin([
    ['X','_','_'],
    ['_','X','O'],
    ['_','O','X']
]))

print(checkWin([
    ['_','O','X'],
    ['_','O','_'],
    ['_','O','X']
]))

print(checkWin([
    ['X','_','_'],
    ['O','O','X'],
    ['X','X','O']
]))

print(checkWin([
    ['_','X','O'],
    ['X','O','_'],
    ['O','_','_']
]))

img

如有帮助,望采纳!谢谢!

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

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632