2010-01-27 75 views
13

我有蟒蛇while循環如何做,而與多個條件的循環

condition1=False 
condition1=False 
val = -1 

while condition1==False and condition2==False and val==-1: 
    val,something1,something2 = getstuff() 

    if something1==10: 
     condition1 = True 

    if something2==20: 
     condition2 = True 

' 
' 

我想打出來,當所有這些條件都爲真循環,上面的代碼不工作

我本來有

while True: 
     if condition1==True and condition2==True and val!=-1: 
     break 

哪些工作正常,這是做到這一點的最佳方式?

感謝

+0

你能澄清你的意思是「上述代碼不起作用」。當你在while語句中有條件時會發生什麼? –

+0

喜 代碼的第一位爆發,如果任何一個條件得到滿足,我要打破當所有的條件都滿足 感謝 – mikip

回答

13

更改and s到or秒。

+0

感謝大家好,但爲什麼這使其工作 – mikip

+7

的http:// EN .wikipedia.org/wiki/De_Morgan%27s_laws –

+0

@SilentGhost:在第一個blurb(*維護*循環)中給出的條件幾乎是第二個blurb(它打破了循環)給出的條件的否定,除了它使用錯誤的邏輯運算符。 –

-2

使用像您最初完成的無限循環。它的清潔,如你所願

while 1: 
    if condition1 and condition2: 
     break 
    ... 
    ... 
    if condition3: break 
    ... 
    ... 
2
while not condition1 or not condition2 or val == -1: 

但沒有什麼不對您如果同時內部真正使用的原,你可以將很多條件。

-1

我不知道它會讀更好,但你可以做到以下幾點:

while any((not condition1, not condition2, val == -1)): 
    val,something1,something2 = getstuff() 

    if something1==10: 
     condition1 = True 

    if something2==20: 
     condition2 = True 
0

你有沒有注意到,在您發佈的代碼,condition2永遠不會設置爲False?這樣,你的循環體永遠不會被執行。

此外,請注意,在Python中,not condition優於condition == False;同樣,condition優於condition == True

0
condition1 = False 
condition2 = False 
val = -1 
#here is the function getstuff is not defined, i hope you define it before 
#calling it into while loop code 

while condition1 and condition2 is False and val == -1: 
#as you can see above , we can write that in a simplified syntax. 
    val,something1,something2 = getstuff() 

    if something1 == 10: 
     condition1 = True 

    elif something2 == 20: 
# here you don't have to use "if" over and over, if have to then write "elif" instead  
    condition2 = True 
# ihope it can be helpfull