Als Anwendungsnutzer eine Formel angeben

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
frcom
User
Beiträge: 49
Registriert: Sonntag 24. September 2017, 19:35

Hallo Allerseits,
Ich bin ziemlich neu beim programmieren und versuche mich halt irgendwie rein zu arbeiten... Daher diese Frage:
Folgendes Problem:
Ich möchte eine Anwendung, in der der Benutzer erst variablen definieren kann, das habe ich über v = input("v = ") gemacht. Und nun soll der Nutzer aber auch eine Formel angeben, nach der die Variablen verrechnet werden... Un da hängts
Also der Nutzer soll irgendwie (nachdem er v1, v2, v3 definiert hat) v1 + v2 - v3 oder sonst was eingeben können und dann die Lösung raus bekommen.
Ich hoffe mir kann Jemand trotz meiner miserablen Problembeschreibungsskills helfen, danke schon einmal im Vorraus!
Grüße
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

So einfach ist das nicht. Wenn du deinem Benutzer vertraust, kannst du mit eval() arbeiten. Allerdings ist das eine Funktion von deren Existenz eigentlich kein Anfaenger etwas wissen sollte. Weil sie monstroese Sicherheitsluecken reissen kann.

Die "richtige" Art das zu machen ist einen Parser fuer die Ausdruecke zu schreiben. ZB so hier:

http://pyparsing.wikispaces.com/file/vi ... /pycalc.py
PythonFatalError
User
Beiträge: 6
Registriert: Sonntag 24. September 2017, 20:31

Das ist nicht schwer für Übungszwecke (als Anfänger). Gibt mehrere Möglichkeiten das umzusetzen du kannst den User z.B. ein String eingeben lassen und diesen dann aufteilen / auswerten (schwer für Anfänger) z.B.: "8 + 10 * 33 ^ 3"
Geht auch mit einfachen mitteln. Du kannst zum Beispiel die Variablen und die Operatoren einzeln abfragen wie z.B.

Zahl 1:
Bitte den Operator angeben (+,-,*,/,^,...)
zweite Zahl :
Operator:
...

Macht irgendwo kein Sinn, dass du den User erst Variablen "deklarieren" lässt und dann nachträglich noch die Werte dazu und ihn dann erst nach der "Formel" fragst. Nimm einfach nur die Werte.
Aber auch das lässt sich mit einfachen Mitteln lösen.

die Eingaben speicherst du in Variablen ab (musst du konvertieren damit du damit rechnen kannst, da es standardmäßig ein String ist)
über if - Abfragen kannst du dann den Operator erkennen und entsprechend rechnen.
Über print() kannst du das Ergebnis ausgeben.

Ich habe dir jetzt bewusst nicht den Code hingeschrieben, weil du genau das ja lernen willst.
Kleiner Tipp am Rande: Such dir am Anfang besser ein Tutorial, wo du etwas erklärt bekommst, dann eine Aufgabe dazu bekommst, die Lösen musst, evtl. ein Tipp anzeigen lassen kannst und die Lösung zum Vergleich (darfst dich halt nicht selber bescheißen).
Auf englisch gibt es hierzu sehr gute, wo du auch direkt im Browser programmieren kannst wie z.B. auf Codecademy. Da lernst du erstmal die ganzen Grundlagen die beherrschen solltest, wenn du wirklich vor hast Python zu lernen.
frcom
User
Beiträge: 49
Registriert: Sonntag 24. September 2017, 19:35

Wow okay... :D
Vielen Dank erstmal für die schnellen Antworten, ich muss mir dann alles einzeln morgen anschauen.
Dem Nutzer trauen ist nicht das Problem, da ich das vor allem für mich schreibe, am Ende soll ein Programm raus kommen, das mir die Fehlerwerte über die gaußsche Fehlerfortpflanzung rausspuckt, daher auch erst Variablen definieren und dann die Formel rein packen, da ich ja zu jeder Variable die partielle Ableitung brauche... aber gut, tut auch nichts zur Sache :D
Das online Tutorial hört sich gut an!
Antworten