Come faccio a scrivere una stringa equazione risolutore in Python?
Domanda
Grazie in anticipo!
Sto scrivendo un programma per controllare se a
è vero e poi tornare Vero o Falso. Ho bisogno di dividerlo in segno di uguale e quindi verificare se il 1 ° elemento della lista è uguale al secondo elemento e vice-versa. Ecco quello che ho finora:
def s_equation(a):
equal=a.split("=")
Soluzione
È possibile utilizzare eval () per valutare ogni parte dell'equazione:
def s_equation(a):
left, right = a.split('=')
return eval(left) == eval(right)
Alcuni test:
>>> s_equation('1+1+1=3')
True
>>> s_equation('2*2=8')
False
Altri suggerimenti
left, right = a.split("=")
assert left == right
Avrai bisogno di darci maggiori dettagli rispetto a che se si vuole una risposta utile. Stai cercando di scrivere un sistema di computer algebra completo (come ad esempio Mathematica)? Questo è un progetto Biiiiig ed è già stato fatto più volte. Considerare l'utilizzo di qualcosa come Sage
.
Edit: la matematica mi ha picchiato al punzone , anche se mi consiglia di utilizzare ast.literal_eval
invece di eval
a meno che non vi fidate l'ingresso che riceverete.
Non c'è davvero dare informazioni sufficienti per rispondere bene alla tua domanda. Vuoi provarlo come identità (cioè testare l'algebra) o come un'uguaglianza istantanea?
Per i primi, (prima installare sympy):
import sympy
def s_equation(a):
x = sympy.Symbol('x')
y = sympy.Symbol('y')
left, right = a.split('=')
return eval (left + '==' + right)
utilizzo:
s_equation('x+x = x*2')
#True
s_equation('x+y**2 = y+x**2')
#False