平衡括号程序 Python:匹配函数返回不正确的值

Balanced Parentheses Program Python: Match Function Returning Incorrect Value

所以我正在尝试做“括号串是否平衡?” Python 中的程序,虽然我的平衡函数正常工作,但我创建的用于检查括号是否匹配的函数返回的值不正确。我将附上整个代码、注释和所有内容,以便您查看。我尝试这样做的第一种方法是使用条件 if/else 语句。对于这种方法,即使括号匹配,我也一直得到 False 。对于第二种方法,我一直收到 TypeError: 。这是我的代码。

from collections import deque 

堆栈 = 双端队列()

#dir(堆栈)

#使用堆栈查看输入字符串是否有一组平衡的括号

#function 告诉应该匹配哪些括号。以后会用到

def is_match(paren1, paren2):

#dictionary for more efficiency rather than a bunch of conditionals
#match_dict = {
   # ')': '(',
   # ']': '[',
   # '}': '{'
#}

if paren1 == '(' and paren2 == ')':
    return True
if paren1 == '[' and paren2 == ']':
    return True
if paren1 == '{' and paren2 == '}':
    return True 
else:
    return False


#print(match_dict[paren1] == paren2)
#return match_dict[paren1] == paren2

def is_balanced(字符串):

#start with an iterative for loop to index through the string 
for i in string: 
    
    #check to see if the index of the string is an open parentheses, if so, append to stack
    if i in '([{':
        stack.append([i])
        print(i)
        
    #if index is not in substring, check to see if string is empty 
    else:
        if len(stack) == 0:
            return 'not balanced'
        else:
            match = stack.pop()
            if is_match(match, i) == True:
                return 'balanced'
            else:
                return 'not balanced'
  
    

string = ('([{}])')

is_balanced(字符串)

使用 stack.append(i) 而不是 stack.append([i]) 将元素 i 添加到双端队列:

def is_balanced(string):
    # start with an iterative for loop to index through the string
    for i in string:

        # check to see if the index of the string is an open parentheses, if so, append to stack
        if i in "([{":
            stack.append(i)  # <- HERE!
            print(i)

        # ...

如果您想通过从可迭代参数 ([i]) 附加元素来扩展双端队列,请使用 extend:

stack.extend([i])

有关详细信息,请参阅 Python documentation