2016-06-08 10 views
-3

목록을 반복 할 수 있으며 목록의 각 항목에 대해 두 개의 조건부 IF 경로를 사용합니까?파이썬 이중 동시 'IF'조건

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 

가 각각의 항목이 두 변수와 비교하여, 동작은 항목의 값에 따라 각각의 변수에 대해 수행된다 :

는 예를 들어, 아래 pseduocode을 고려한다. 내가 질문을 이해한다면

+2

'andif'를'if'로 변경하십시오. if 문이나 if 문을 중첩하거나 중첩합니다. 네가 원하는 걸 혼란 스럽다. –

+0

거기에'and'를 제거하면 괜찮을 것입니다. 그렇지 않다면 게시물은 명확하지 않다 –

+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 옆의 조건은 항상 선택됩니다. 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 
관련 문제