使用count()但无法获得正确的输出

问题描述 投票:0回答:1

我正在尝试在python中构建一个tic tac toe游戏,在这个阶段我找到一个横向赢家。程序中的所有内容目前都是硬编码的。根据现在的游戏列表,第一行应该是胜利者,但输出是错误的。

我试图迭代行中的每个元素,但后来遇到了这个count(),但它似乎不起作用

game=[[1,1,1],
      [0,2,0],
      [2,2,0 ]]

def win(current_game):
    for row in current_game:
        print(row)
        if (row.count(row[0]==len(row))==True):
            print("winner", row[0])

win(game)

我得到的输出是: -

[1, 1, 1]
[0, 2, 0]
[2, 2, 0]
winner 2

但正确的输出应该是: -

[1,1,1]
winner 1
[0,2,0]
[2,2,0]
python-3.x
1个回答
4
投票

根据我的理解,row.count(obj)返回objrow对象中出现的次数。 Reference

因此,row[0]==len(row)是一个比较并返回truefalse在这里没有意义。在row.count(row[0]==len(row))你正在检查truefalse是否发生在row而不是数字。

你想要的是检查你的列表中的第一个项目是否出现三次(或列表的长度)。

def win(current_game):
    for row in current_game:
        print(row)
        if (len(row) == row.count(row[0])):
            print("winner", row[0])
© www.soinside.com 2019 - 2024. All rights reserved.