2013-12-16 29 views
0

我已經在這裏設置一個很簡單的例子:Python:如果達到2個條件中的1個,應該停止迭代?

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)) 

當然,這將是一個無限循環的兩個總是1永遠達不到溫度。 但我試圖弄清楚的是如何寫我的while語句來停止,如果滿足兩個條件之一。

回答

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 
+0

以及感謝回來,這的確幫助。一個相當簡單的解決方案,但如果我從某種邏輯意義上分解它(即使在第一個視圖中它看起來不太邏輯)它實際上是有意義的:) –

+1

我已經添加了一些信息,希望能夠使它更清晰 – jonrsharpe

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時,循環纔會繼續。

希望這會有所幫助!

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))