为什么这个python函数返回true?

时间:2016-12-18 00:17:24

标签: 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('[]')

1 个答案:

答案 0 :(得分:2)

在方法的最后一行,它检查堆栈大小是否为零。如果为0,则表示已处理所有字符且没有无效组合,因此返回true。如果size不为零,则意味着仍有一些括号与左括号匹配,方法返回false。

  当堆栈的长度/大小为零时,

len(stack)== 0变为true