2016-06-08 71 views
-3

是否有可能循環遍歷一個列表,並且對於列表中的每個項目,往下走兩個有條件的IF路徑?Python雙重同時'IF'條件

例如,考慮下面的pseduocode:

for item in some_list: 
    if some_variable == item: 
     some_variable += 1 
    else: 
     some_variable -= 1 
    andif some_other_varible == item: 
     some_other_variable += 1 
    else: 
     some_other_variable -= 1 

所以每個項目進行比較,兩個變量,並在根據所述項目的值的每個變量執行的動作。

+2

只要將'andif'改爲'if'即可。要麼是嵌套if語句。我很困惑你想要什麼。 –

+0

刪除'和'那裏,你應該沒問題。如果不是,帖子不清楚 –

+0

,但如果符合第一個「if」條件,第二個「if」是否會被滿足? – Charon

回答

3

如果我理解這個問題,你只需要:

for item in list: 
    if some_variable == item: 
     some_variable += 1 
    else: 
     some_variable -= 1 

    # Start new IF block 
    if some_other_varible == item: 
     some_other_variable += 1 
    else: 
     some_other_variable -= 1 

每次打開一組IF語句,它與if完成時間。始終檢查初始if旁邊的條件。其他情況下,如elifelse,則根據該組中的先前條件進行檢查。每次使用if時,都會打開一個新的設置要檢查的語句。上面的代碼將檢查第一組,然後移動到第二組。因此,無論第一組中的哪一個條件成立,總是會檢查if some_other_varible == item

一個好的經驗法則是考慮打開一個if塊,每做一個邏輯決定待做。在這種情況下,第一個邏輯決定是「根據其值增加或減少some_variable」。邏輯決策是「根據其值增加或減少some_other_variable」。因此,請用自己的語句來檢查每一個。

0

IIUC,您希望andif位於上述if塊的else之內。

for item in list: 
    if some_variable == item: 
     somevariable += 1 
    else: 
     somevariable -= 1 

     # Indented block is within 'else' above. 
     if some_other_varible == item: 
      some_other_variable += 1 
     else: 
      some_other_variable -= 1