Comment puis-je écrire un solveur d'équation de chaîne en python?
Question
Merci d'avance!
Je vous écris un programme pour vérifier si a
est vrai, puis retourner Vrai ou Faux. Je dois le diviser au signe égal, puis vérifier si le 1er élément de la liste est égal au second élément et vice-versa. Voici ce que j'ai jusqu'à présent:
def s_equation(a):
equal=a.split("=")
La solution
Vous pouvez utiliser eval () pour évaluer chaque partie de l'équation:
def s_equation(a):
left, right = a.split('=')
return eval(left) == eval(right)
Certains tests:
>>> s_equation('1+1+1=3')
True
>>> s_equation('2*2=8')
False
Autres conseils
left, right = a.split("=")
assert left == right
Vous allez devoir nous donner plus de détails que que si vous voulez une réponse utile. Essayez-vous d'écrire un système d'algèbre informatique complet (comme par exemple Mathematica)? C'est un projet biiiiig et a déjà été fait à plusieurs reprises. Pensez à utiliser quelque chose comme Sage
.
Edit: maths m'a battu à la punch, bien que je vous conseille d'utiliser ast.literal_eval
au lieu de eval
à moins que vous faites confiance à l'entrée que vous recevrez.
Vous ne donnent pas vraiment suffisamment d'informations pour répondre à bien votre question. Voulez-vous tester comme une identité (c.-à-tester l'algèbre) ou comme une égalité instantanée?
Pour la première, (installer sympy premier):
import sympy
def s_equation(a):
x = sympy.Symbol('x')
y = sympy.Symbol('y')
left, right = a.split('=')
return eval (left + '==' + right)
utilisation:
s_equation('x+x = x*2')
#True
s_equation('x+y**2 = y+x**2')
#False