Frage

Ich versuche, mit Algebra Problemen eine Suchfunktion, um Arbeit zu machen. Ich möchte so etwas wie Wolfram Alpha, aber ich bin den Aufbau einer Python-Framework für sie. Es sollte mehrere Variablen und Gleichungen, um herauszufinden, auf beiden Seiten des Gleichheitszeichens kann. Ich habe vor kurzem über einen Validator für das Programm gefragt, so dass ich eine Schleife benötigen, die durch eine Reihe von Zahlen und Fakten geht, was jeder der Variablen entspricht. Mein Problem ist, die Dezimalstellen. Ich schlage vor, mit einer Suchfunktion. Hier ist der Gleichungslöser:

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

Jede Hilfe ist hilfreich!

War es hilfreich?

Lösung

Die eval()s wird nicht funktionieren, weil links und rechts sind Strings, keine Ausdrücke. Darüber hinaus werden Sie wesentliche Validierung zu machen, was könnte ein Benutzer geben Sie einen gültigen Python-Ausdruck zu tun haben. Betrachten wir ein paar Werte, die Sie möglicherweise erhalten:

# The typical person's notation for x-squared isn't valid Python
x^2 + x - 3
# 3x means 3 * x to us, but to python it means nothing
3x + 4
# Some people use % to represent division, but that's a modulo operator to Python
3 % 4x
# Python doesn't understand the distributive property
3(4 - x)
# People might use some functions in a way Python doesn't understand
cos x
# Square brackets are used synonymously with parentheses
x[(x^2 - 5)(x^3 - 5x)]

Also, kurz gesagt, werden Sie irgendeine Art von Motor müssen Klartext Gleichungen in gültige Python-Ausdrücke zu konvertieren. Dies ist keine leichte Aufgabe, aber es kann sicherlich durchgeführt werden.

Auch wenn Ihr Projekt sehr ehrgeizig ist, ich denke, es ist eine gute Möglichkeit, Python zu verwenden! Wenn Sie mit einer intelligenten Art und Weise zu konvertieren Gleichungen als Strings in gültigen Python kommen, sollen Sie sie sofort teilen, weil ein paar Leute in der wissenschaftlichen und Mathematik Gemeinschaft Verwendung dafür haben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top