Evaluador de expresiones matemáticas en python

VM Vera Mazhuga Vera Mazhuga

Vera Mazhuga

Software Developer
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

Written by Vera Mazhuga

VM Vera Mazhuga Vera Mazhuga

Vera specializes in writing and maintaining code for various applications. Her focus on problem-solving and efficient programming ensures reliable and effective software solutions.

Newsletter

Subscribe to our newsletter:

Read more

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 ...

1 min read.

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...

1 min read.

Build Once. Own Forever.