Python 在检查括号是否平衡时,我得到的结果不正确(即,我知道输入字符串是平衡的,但输出是不平衡的)

Python 在检查括号是否平衡时,我得到的结果不正确(即,我知道输入字符串是平衡的,但输出是不平衡的),python,python-3.x,Python,Python 3.x,我最近在学习数据结构和算法。我很难理解为什么在实现堆栈并使用它检查括号是否平衡时,我没有得到所需的输出(即输入字符串是平衡的,但我得到的字符串是不平衡的) 第一: stack.isEmpty实际上始终为真。您需要调用方法:stack.isEmpty() 第二: elif char not in opening and closing: 和closing部分实际上也总是正确的,但在这种情况下,它是不相关的,因为此时您已经知道char不在closing中。您应该完全省略并关闭 第三: ... or

我最近在学习数据结构和算法。我很难理解为什么在实现堆栈并使用它检查括号是否平衡时,我没有得到所需的输出(即输入字符串是平衡的,但我得到的字符串是不平衡的)

第一:

stack.isEmpty
实际上始终为真。您需要调用方法:
stack.isEmpty()

第二:

elif char not in opening and closing:
和closing
部分实际上也总是正确的,但在这种情况下,它是不相关的,因为此时您已经知道
char
不在
closing
中。您应该完全省略
并关闭

第三:

... or char != stack.pop():

char
永远不能等于
stack.pop()
,因为此时您知道
char
是一个结束括号,而
stack
只包含开始括号。您需要一些逻辑来将每个结束括号与其开始对应项关联起来。

大概是通过
stack.isEmpty
您的意思是
stack.isEmpty()
elif char not in opening and closing
不是你的意思either@leafcudde
elif
@khelwood所指的正确语法是:
elif开头不char,结尾不char:
@khelwood谢谢你说出我的错误。全部的brainfart@fendall没问题。总是很乐意指出别人的错误。
elif char not in opening and closing:
... or char != stack.pop():