¿Cómo escribo una resolución de ecuaciones de cadenas en Python?
Pregunta
Gracias de antemano!
Estoy escribiendo un programa para comprobar si es cierto a
y luego regresar Verdadero o Falso. Necesito dividirlo en el signo igual y después comprobar si el primero elemento de la lista es igual al segundo elemento y viceversa. Aquí es lo que tengo hasta ahora:
def s_equation(a):
equal=a.split("=")
Solución
Se puede utilizar eval () para evaluar cada parte de la ecuación:
def s_equation(a):
left, right = a.split('=')
return eval(left) == eval(right)
Algunas pruebas:
>>> s_equation('1+1+1=3')
True
>>> s_equation('2*2=8')
False
Otros consejos
left, right = a.split("=")
assert left == right
Vas a necesitar para darnos más detalles que que si se desea una respuesta útil. ¿Estás tratando de escribir un sistema de álgebra computacional completo (como por ejemplo Mathematica)? Eso es un proyecto biiiiig y se ha hecho ya varias veces. Considere el uso de algo así como Sage
.
Editar: matemáticas me golpeó por la mano , aunque yo recomendaría usar ast.literal_eval
en lugar de eval
menos que confíe en la entrada que va a recibir.
En realidad, no dan información suficiente para responder así a su pregunta. ¿Quieres probarlo como una identidad (es decir, probar el álgebra) o como una igualdad instantánea?
En el primer caso, (sympy instalar primero):
import sympy
def s_equation(a):
x = sympy.Symbol('x')
y = sympy.Symbol('y')
left, right = a.split('=')
return eval (left + '==' + right)
uso:
s_equation('x+x = x*2')
#True
s_equation('x+y**2 = y+x**2')
#False