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("=")
Était-ce utile?

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
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top