здравствуйте,
такая задача дано арифметическое выражение
например:
((((((((12+24)-56)^29)/52)+29)^90)/12)/62)
необходимо убрать все ненужные скобки и оставить только те что необходимы для вычисления
Выход программы :
((12+24-56)**29/52+29)^90/12/62
мой код почемуто не работает может кто-то поможет понять в чем ошибка ?
def remove_breckets(expression):
left_pa = -1 #records the position of the left parenthese
min_op = 0 #records the operator in the parentheses with minimum priority
left_op = 0 #records current operator
right_op = 0
stack = []
new_exp = ""
for i in range(len(expression)):
if expression[i] in operators:
left_op = expression[i]
if min_op == 0:
min_op = expression[i]
if min_op != 0:
if prior(min_op) > prior(expression[i]):
min_op = expression[i]
print("left_op", left_op, min_op, "min_op")
elif expression[i] == "(":
left_pa = i
stack.append(left_pa)
elif expression[i] == ")":
stack.pop()
if i != len(expression) - 1:
if expression[i+1] in operators:
right_op = expression[i]
elif not (min_op <= left_op or min_op < right_op):
expression[i] = "$"
expression[left_pa] = "$"
print(expression[i], "left_op", left_op, "min_op", min_op, "left_pa", left_pa, "right_op", right_op)
for i in range(len(expression)):
if expression[i] != "$":
new_exp += expression[i]
return new_exp
Заранее спасибо за помощь