Calculadora notación polaca inversa (rpn) en python

Valoración: 4.69 (512 votos)

La notación polaca inversa (RPN), también conocida como notación de postfijo, es un método alternativo para expresar expresiones matemáticas. En lugar de colocar los operadores entre los operandos (como en la notación infija), los operadores aparecen después de sus operandos.

Tabla de Contenido

¿Qué es la Notación Polaca Inversa?

La RPN se caracteriza por su simplicidad y eficiencia en la evaluación de expresiones. Su principal ventaja radica en la eliminación de la necesidad de paréntesis y la aplicación de reglas de precedencia de operadores, lo que simplifica el proceso de cálculo.

En la RPN, los operandos se introducen en una pila y los operadores se ejecutan sobre los elementos de la pila. Por ejemplo, la expresión infija "2 + 3" se escribe como "2 3 +" en RPN. Esta expresión se evalúa de la siguiente manera:

  1. Se coloca "2" en la pila.
  2. Se coloca "3" en la pila.
  3. Se aplica el operador "+" a los dos elementos superiores de la pila, 2 y 3, y se coloca el resultado (5) en la pila.

Ventajas de la Notación Polaca Inversa

  • Simplicidad: Elimina la necesidad de paréntesis y reglas de precedencia de operadores.
  • Eficiencia: Permite una evaluación rápida de expresiones.
  • Facilidad de implementación: La RPN se implementa fácilmente utilizando una pila.
  • Ideal para lenguajes basados en pilas: Es ampliamente utilizada en lenguajes de programación como Forth y PostScript.

Desventajas de la Notación Polaca Inversa

  • Curva de aprendizaje: Puede resultar difícil de entender para usuarios acostumbrados a la notación infija.
  • Difícil de leer: La RPN puede ser menos legible que la notación infija, especialmente para expresiones complejas.
  • Limitada en algunos casos: La RPN puede ser menos eficiente para evaluar expresiones que contienen funciones con un número variable de argumentos.

Implementación de una Calculadora RPN en Python

Implementar una calculadora RPN en Python es un ejercicio sencillo. El núcleo de la calculadora es una pila que almacena los operandos y un diccionario que contiene las funciones y operadores permitidos.

Código de la Calculadora RPN

def calcular_rpn(expresion): pila = [] operaciones = { '+': lambda x, y: x + y, '-': lambda x, y: x - y, '': lambda x, y: x  y, '/': lambda x, y: x / y } for token in expresion.split(): if token in operaciones: operando2 = pila.pop() operando1 = pila.pop() resultado = operaciones[token](operando1, operando2) pila.append(resultado) else: pila.append(float(token)) return pila.pop()  # Ejemplo de uso expresion = "2 3 + 4 " resultado = calcular_rpn(expresion) print(f"El resultado de la expresión {expresion} es: {resultado}")

Explicación del Código

  1. Función `calcular_rpn(expresion)`: Esta función recibe la expresión RPN como entrada.
  2. Pila: Se crea una pila vacía para almacenar los operandos.
  3. Diccionario de operaciones: Se crea un diccionario que contiene las funciones para los operadores básicos (+, -, , /).
  4. Iteración sobre tokens: La función itera sobre cada token en la expresión RPN. Si el token es un operador, se extraen los dos últimos operandos de la pila, se aplica la función del operador y se coloca el resultado en la pila. Si el token es un operando, se coloca directamente en la pila.
  5. Retorno del resultado: Una vez que se han procesado todos los tokens, la función devuelve el elemento superior de la pila, que es el resultado del cálculo.

Ejemplos de Uso

Aquí se muestran algunos ejemplos de uso de la calculadora RPN implementada:

Ejemplo 1

expresion = "2 3 + 4 " resultado = calcular_rpn(expresion) print(f"El resultado de la expresión {expresion} es: {resultado}")

Salida:

El resultado de la expresión 2 3 + 4  es: 20.0

Ejemplo 2

expresion = "5 1 2 + 4  + 3 -" resultado = calcular_rpn(expresion) print(f"El resultado de la expresión {expresion} es: {resultado}")

Salida:

calculadora notacion polaca inversa python - Es mejor la notación polaca inversa

El resultado de la expresión 5 1 2 + 4  + 3 - es: 10

La notación polaca inversa (RPN) es una forma poderosa y eficiente de representar expresiones matemáticas. Su implementación en Python es relativamente simple y ofrece un enfoque alternativo para el cálculo.

Esta tutorial ha proporcionado una introducción completa a la RPN y su implementación en Python. Ahora puedes explorar la creación de tu propia calculadora RPN y experimentar con diferentes expresiones y funciones.

"

Si quieres conocer otros artículos parecidos a Calculadora notación polaca inversa (rpn) en python puedes visitar la categoría Finanzas / Inversiones.

Subir