苦苦挣扎,连接4赢

时间:2013-11-28 12:06:59

标签: python grid

我的问题是我正在检查可能的胜利列表(里面有每个组合的列表),我有这个,它检查胜利列表中的第一个列表,以及其中的所有元素。我如何才能使这个if语句检查所有元素?例如,0表示胜利列表中的所有不同列表并检查所有列表

获胜中的x:

    if 'x' in wins[0] and wins[0][0] and wins[0][1] and wins[0][2] and wins[0][3] == 'x':
        print("\nWell done! You've won!")
        menu(

1 个答案:

答案 0 :(得分:0)

这将检查每个子列表中的所有项目== x。

wins = [['x', 'x', 0, 'x'], ['x', 0, 0, 'x'], ['x', 'x', 'x', 'x']]

# Iterate over all sublists
for win in wins:
    # Iterate over all elements in list, and check if all equals x
    if all(i == 'x' for i in win):
        # If this is the case - write a message and break out of the loop
        print("Well done! You've won!")
        break

如果您想按照自己的方式进行操作,则必须修复原始代码中的一些问题。你不能说if a and b and c and d == 'x'。这与Python相互关联:

if a is not False and
   b is not False and
   c is not False and
   d == 'x'

您想要检查每个项目,例如:

if wins[0][0] == 'x' and wins[0][1] == 'x' and wins[0][2] == 'x' and wins[0][3] == 'x': 

然后把所有这些放在一个循环中:

for sublist in wins:
    if sublist[0] == 'x' and sublist[1] == 'x' and sublist[2] == 'x' and sublist[3] == 'x':
        print("Well done! You've won!")
        break

但这真的很麻烦 - 你应该使用for循环。这是一个可能更清楚的例子:

for sublist in wins:
    for item in sublist:
        if item != 'x'
            break
    else:
        print("Well done! You've won!")
        break

此代码将循环遍历所有子列表,然后遍历子列表中的所有项目。如果遇到一个不等于'x'的项,则内循环被破坏。

在内部for循环结束时,有一个else子句。这在Python中很少使用,但可以非常好用。 else子句中的代码仅在循环未被破坏时执行。

在我们的例子中,这意味着所有项目都等于'x'。