Frage

Vielen Dank im Voraus! Ich schreibe ein Programm zu überprüfen, ob a wahr ist und dann wieder Wahr oder Falsch. Ich brauche es auf dem gleichen Zeichen aufzuteilen und dann prüfen, ob der erste Eintrag in der Liste auf den zweiten Punkt gleich ist und umgekehrt. Hier ist, was ich habe, so weit:

def s_equation(a):
    equal=a.split("=")
War es hilfreich?

Lösung

Sie können eval () verwenden, um jeden Teil der Gleichung zu bewerten:

def s_equation(a):
    left, right = a.split('=')
    return eval(left) == eval(right)

Einige Tests:

>>> s_equation('1+1+1=3')
True
>>> s_equation('2*2=8')
False

Andere Tipps

left, right = a.split("=")
assert left == right

Sie gehen müssen uns mehr Details zu geben, als dass, wenn Sie eine nützliche Antwort wollen. Versuchen Sie, ein vollständiges Computer-Algebra-System zu schreiben (wie zum Beispiel Mathematica)? Das ist ein biiiiig Projekt und wurde bereits mehrfach geschehen. Betrachten Sie mit so etwas wie Sage .

Edit: math schlug mich auf den Stempel , obwohl würde ich empfehlen die Verwendung von ast.literal_eval statt eval, wenn Sie die Eingabe vertrauen Sie erhalten.

Sie geben nicht wirklich genug Informationen, um Ihre Frage gut zu beantworten. Haben Sie es als eine Identität (dh Test der Algebra) oder als eine momentane Gleichheit testen?

Für ersteres (installieren sympy zuerst):

import sympy

def s_equation(a):
    x = sympy.Symbol('x')
    y = sympy.Symbol('y')
    left, right = a.split('=')
    return eval (left + '==' + right)

Nutzung:

s_equation('x+x = x*2')
#True
s_equation('x+y**2 = y+x**2')
#False
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top