2012-09-05 2 views
1

그래프가 있고 그 중 일부가 코드를 생성합니다. 하나의 노드에서 하나의 조건. 예를 들어 생성 된 코드는 다음처럼 보일 수 있습니다 : 나는 예 청소기를 만들기 위해 True/False와 실제 조건을 대체조건 트리 및 백 트레이스

def function(): 
    steps = [] 

    if True: 
     steps.append(1) 

     if True: 
      steps.append(2) 

      if False: 
       steps.append(3) 
       return 'a', steps 

      if False: 
       steps.append(4) 
       return 'b', steps 


     if True: 
      steps.append(5) 

      if True: 
       steps.append(6) 

       if False: 
        steps.append(7) 
        return 'a', steps 
      if True: 
       steps.append(8) 
       return 'b', steps 

.

이 함수는 튜플 ('b', [1, 2, 5, 6, 8])을 반환하므로 취해진 몇 가지 값과 단계가 있습니다. 이 코드를 수정하여 성공하지 못한 단계를 제거하고 싶습니다. 따라서 수정 후 함수는 ('b', [1, 5, 8])을 반환해야합니다.

내 질문은 무엇이 최선의 방법입니까?

답변

3

이렇게하는 한 가지 방법은 실패한 그룹마다 pop입니다.

def function(): 
    steps = [] 

    if True: 
     steps.append(1) 

     if True: 
      steps.append(2) 

      if False: 
       steps.append(3) 
       return 'a', steps 

      if False: 
       steps.append(4) 
       return 'b', steps 

      steps.pop() #removes 2 from steps 

     if True: 
      steps.append(5) 

      if True: 
       steps.append(6) 

       if False: 
        steps.append(7) 
        return 'a', steps 

      steps.pop() #remove the 6 

      if True: 
       steps.append(8) 
       return 'b', steps 

     steps.pop() #remove the 5 
    steps.pop() # removes the 1 
+0

그러나 'if'대신 'elif'를 사용하는 것은 동일하지 않습니다. 어떤 조건은 점검되지 않을 것입니다 ... 나는 그것이 나의 모범과 함께 작동한다고 생각하지 않습니다. – Adam

+0

예를 들어 설명해 주시겠습니까? 6, 7, 8 단계로 코드를 변경하는 방법을 잘 모르겠습니다. – Adam

+0

@Adam이 업데이트되었으므로 다른 사람없이 깔끔하게 보입니다. 이것이 원하는대로되기를 바랍니다. –

관련 문제