Python 3:while循环不返回False

时间:2013-06-11 13:59:05

标签: if-statement python-3.x while-loop boolean

我正在使用我迄今为止在课堂上学到的概念进行练习3连续练习:while循环,布尔值和if语句。

出于某种原因,我的函数似乎没有返回False,即使我给出了一个应该的参数。相反,我得到一个'执行命令,请等待结果'消息,之后没有任何消息。最初我认为它在某个地方被无限循环捕获,但我认为不应该因为我对所有变量进行了限制,并在所有while循环的末尾添加了+ = 1。

非常感谢任何帮助!

以下是我的代码片段:

def is_winner(grid):
    x = 0
    y = 0


    while x <=3:
        x +=1
        while y <= 4:  

            if grid[x][y] == grid[x + 1][y] ==grid[x + 2][y]:
                y += 1

                return True
    while x <= 3: 
        x +=1
        while y <= 3:
            if grid[x][y] == grid[x + 1][y - 1] == grid[x + 2][y - 2]:
                y +=1

                return True

    else:
        return False

1 个答案:

答案 0 :(得分:3)

如果y语句为if,您只需递增True。如果它们永远不存在,那么你进入了一个无限循环:

while x <=3:
    while y <= 4:  
        x +=1
        if grid[x][y] == grid[x + 1][y] ==grid[x + 2][y]]:
            y += 1

您的内部while循环永远不会完成,因此您的外部while循环永远不会被测试。

将其更改为:

while x <=3 and y <= 4:  
    x +=1
    if grid[x][y] == grid[x + 1][y] ==grid[x + 2][y]]:
        y += 1