Comentários?
OPERADORES = "+-*/" ADD = "+" SUB = "-" MUL = "*" DIV = "/" FIM = "fim" PROMPT = "Digite uma expressão com todos os termos separados por espaço [ou 'fim' para terminar]\n" #----------------------------------------------------------- def main(): print("PROGRAMA PARA CÁLCULO DE EXPRESSÕES POLONESAS\n") expressao = input(PROMPT) while expressao != FIM: posfixa = expressao.split() print(posfixa, "=", calcule(posfixa),"\n") expressao = input(PROMPT) #----------------------------------------------------------- def calcule( posfixa ): ''' (list) -> float Recebe um lista posfixa com strings representando uma expressão em notação polonesa e retorna o valor da expressão. Pré-condição: a função supõe que a expressão está correta. ''' pilha = Pilha() # pilha de execução: contém apenas operandos (= números) for item in posfixa: if item in OPERADORES: valor_2 = pilha.desempilha() valor_1 = pilha.desempilha() if item == ADD: resultado = valor_1 + valor_2 elif item == SUB: resultado = valor_1 - valor_2 elif item == MUL: resultado = valor_1 * valor_2 else: # item == DIV: resultado = valor_1 / valor_2 else: # numero resultado = float(item) pilha.empilha(resultado) return pilha.desempilha()