Insights

Evaluador de expresiones matemáticas en python

Photo of the author: Vera Mazhuga

Vera Mazhuga

  •  

1 min read.

En ésta entrada vamos a ver cómo analizar y ejecutar expresiones matemáticas en python.


A veces aparecen tareas en las que no sólo tenemos que preguntar al usuario valores de algunos datos, sino las fórmulas de cómo calcularlos. En éste caso le pedimos escribir una expresión matemática y luego los valores de las variables.


Por ejemplo, queremos preguntar al usuario sobre la posición de un objeto que se mueve, pero no no sabemos nada sobre cuál la ley de movimiento está gobernando el objeto dado. Si el objeto se mueve uniformemente acelerado, el usuario nos escribe la siguiente fórmula:



Entonces tenemos que poder analizar las expresiones se siguiente tipo:

x + v * t + a * t^2 / 2


donde
x es la posición inicial, v es la velocidad inicial, t - tiempo, a - aceleración.


Para analizar esos tipos de expresiones vamos a usar la versión de plugin
js-expression-eval escrita en python: py-expression-eval.

>>>> from parser import Parser
>>>> parser = Parser()
>>> parser.parse('x + v * t + a * t^2 / 2')
<parser.Expression instance at 0x10557ddd0>

Ahora podemos sacar la lista de variables de nuestra expresión:

>>>> expr = parser.parse('x + v * t + a * t^2 / 2')
>>> expr.variables()
['x', 'v', 't', 'a']

Si nuestra expresión es muy compleja o sabemos las valores de algunas sus variables, podemos simplificarla, convirtiéndola en una expresión más corta y sencilla:

>>>> expr.simplify({}).toString()
'((x+(v*t))+(a*((t^2.0)/2.0)))'
>>> expr.simplify({'t': 2}).toString()
'((x+(v*2))+(a*2.0))'

Otro ejemplo:

>>>> parser = Parser()
>>> parser.parse('2 * 3  + x').simplify({'t': 2}).toString()

'(6.0+x)'

Para evaluar nuestra expresión (asignar valores a las variables) usamos el método

evaluate, al que pasamos el diccionario, donde las llaves son los nombres de variables:

>>>> parser = Parser()
>>> parser.evaluate('3  + x', {'x': 2})
5.0

Learn more by receiving an email once a month.

Additional Insights

Servicios públicos sin CSRF y votación en Colombia

¿Cuándo es la fecha de votación para Presidencia, Cámara, Senado? El 9 de Marzo de 2.014, sabe usted ¿Dónde le corresponde vo...

Author Igor Támara Igor Támara

Beneficios en AxiaCore

Las empresas hoy en día exigen cada vez más de sus empleados. Esto implica en gran medida que los funcionarios dediquen gran ...

Photo of the author: Carolina Muñoz Carolina Muñoz

Trabajar en axiacore

Una de las cosas que poco se preguntan las personas que comienzan a trabajar son los beneficios que tienen, a parte desde lue...

Photo of the author: Diana Leal Diana Leal