Python:如果达到2个条件中的1个,应该停止迭代吗?

时间:2013-12-16 10:32:29

标签: python python-3.x while-loop

我在这里设置了一个非常简单的例子:

def sourcecode(a,b,c,alternatief=False):
    volume_a, volume_b = 0, 0
    while volume_a != c or volume_b != c:
        print(volume_a,volume_b)
        volume_a += 1
        volume_b += 2

    if volume_a == c:
        return volume_a
    elif volume_b == c:
        return volume_b

print(sourcecode(7,3,5))

当然这将是一个无限循环,因为两个中的一个永远不会达到c。 但我想弄清楚的是如果满足两个条件中的一个条件,如何编写我的while语句来停止。

3 个答案:

答案 0 :(得分:6)

这是一个相对简单的调整:

while volume_a != c and volume_b != c:
                    ^

这需要两个继续True,因此如果其中任何一个变为False,则停止循环。

使用or

True or True == True
True or False == True
False or True == True
False or False == False # need both to match to break out

使用and

True and True == True
True and False == False # break out here
False and True == False # or here
False and False == False

答案 1 :(得分:1)

您需要使用and,而不是or。当其中一个条件为False时,循环将退出:

while volume_a != c and volume_b != c:
    print(volume_a,volume_b)
    volume_a += 1
    volume_b += 2

如果您使用or,则仅当两个条件均为False时才会停止。通过使用and,仅当两个条件均为True时,循环才会继续。

希望这有帮助!

答案 2 :(得分:0)

其他人的反应很好但你可以简单地使用无限循环并从中返回

def sourcecode(a,b,c,alternatief=False):
    volume_a, volume_b = 0, 0
    while True:
        if volume_a == c:
            return volume_a
        if volume_b == c:
            return volume_b
        print(volume_a,volume_b)
        volume_a += 1
        volume_b += 2

print(sourcecode(7,3,5))