2016-12-18 5 views
1

입력 문자열에 괄호가있는 경우이 함수가 '참'을 반환 할 때 나는 이해하지 못합니다. 그것은 '진정한'을 어디에서 돌려 주는가?왜이 python 함수가 true를 반환합니까?

def balance_check(s): 
    if len(s)%2 !=0: 
     return False 
    opening = set('([{') 
    matches = set([('(',')'),('[',']'),('{','}')]) 
    stack =[] 
    for paren in s: 
     if paren in opening: 
      stack.append(paren) 
     else: 
      if len(stack) == 0: 
       return False 
      last_open = stack.pop() 
      if (last_open,paren) not in matches: 
       return False 
    return len(stack) == 0 


res=balance_check('[]') 
+0

방금 ​​[pythontutor] (HTTP를 통해 실행하여 자신의 질문에 대답 할 수있을 : // pythontutor.com/visualize.html#) –

답변

2

마지막 줄의 메서드에서는 스택 크기가 0인지 확인합니다. 값이 0이면 모든 문자가 처리되었고 유효하지 않은 조합이 없으므로 true를 반환합니다. size가 0이 아니면, 괄호는 여는 괄호와 일치하도록 남아 있으며 메서드는 false를 반환합니다. 길이/스택의 크기가 될 때

렌 (스택) == 0이 참이 제로

+0

고마워요. 이제 어떻게 작동하는지 봅니다. –

관련 문제