How to check parentheses of an algebraic expression?

0

I'm trying to solve a problem of a course I'm doing but I can not imagine a way to solve it.

I need to create a program where the user type any expression that uses parentheses.

My application should look at whether the last expression has the parentheses open and closed in the correct order, and I have no idea how to do this analysis, could you help me?

algebra = list()
aberto = fechado = 0
expressao = str(input('Digite sua expressão algébrica com parênteses: '))
if expressao == '(':
    aberto += 1
elif expressao == ')':
    fechado += 1
if aberto == fechado:
    algebra.append(expressao)
    print(f'A sua expressão {algebra} está correta!')
print(f'Sua expressão está incorreta, verifique seus parênteses {algebra}')
    
asked by anonymous 10.07.2018 / 16:18

1 answer

1
def testaparenteses(expr):
    contador = 0
    for c in expr:
        if c == '(':
            contador += 1
        if c == ')':
            if contador > 0:
                contador -= 1
            else:
                return False

    return contador == 0

expressao = 'pi*(Rexterno**2 - Rinterno**2)'
print(testaparenteses(expressao))

expressao = '(x + (y + 1))*(x - (y + 1))'
print(testaparenteses(expressao))

expressao = ')(' # cagado
print(testaparenteses(expressao))

expressao = '(x + 7)**2 = x**2 + 14*x + 49)' # cagado
print(testaparenteses(expressao))
    
10.07.2018 / 17:33