我键入一个程序,查看带括号的方程式是否平衡,就像左侧括号的数量相同。我需要用“(”,“)”,“[”,“]”,“{”,“}”来做。这就是我到目前为止所做的:
# [import statements]
from stack_array import Stack
# [constants]
def is_balanced(symbolstring):
s = Stack()
balanced = True
index = 0
while index < len(symbolstring) and balanced:
symbol = symbolstring[index]
if symbol == "(" and "[" and"{" :
s.push(symbol)
else:
if s.is_empty():
balanced = False
else:
s.pop()
index = index + 1
if balanced and s.is_empty():
return (True)
else:
return(False)
我需要看看是否可以得到类似print(is_balanced("([5x+(2/4(5))])")
的等式
工作。
答案 0 :(得分:1)
使用in
来测试变量是否具有多个值之一。
if symbol in ['(', '[', '{']:
当您从堆栈中弹出一个项目时,您需要检查打开的符号是否与关闭符号匹配。
if s.is_empty():
balanced = False
else:
opener = s.pop()
if opener == '(' and symbol != ')': balanced = False
if opener == '[' and symbol != ']': balanced = False
if opener == '{' and symbol != '}': balanced = False