【发布时间】:2021-07-07 20:50:27
【问题描述】:
我正在尝试编写一个程序来检查方程式的平衡括号,我的程序正在检查括号,但它只寻找括号并且只为括号给出正确的答案,但为方程式给出不同的答案
我的预期输出是
exp1 = "(2+3)+(1-5)" # True
exp2 = "((3*2))*(7/3))" # False
exp3 = "(3*5))]" # False
下面是我的程序:
def is_valid(myStr):
""" Check the orders of the brackets
Returns True or False
"""
opening = ['(', '[', '{']
closing = [')', ']', '}']
stack = []
for i in myStr:
if i in opening:
stack.append(i)
elif i in closing:
pos = closing.index(i)
if ((len(stack) > 0) and
(opening[pos] == stack[len(stack)-1])):
stack.pop()
else:
return False
if len(stack) == 0:
return True
else:
return False
return
我的程序对上述所有方程都返回 False,我在哪里做错了。
【问题讨论】:
-
最后一个 if - else 条件需要在 for 循环之外。
标签: python python-3.x stack logic