Seite 1 von 1

Variablen als Befehl nutzen

Verfasst: Samstag 7. Februar 2015, 17:12
von Cr4cker
Hey,
ich schreibe ein Programm in dem die Eingabe als Rechnung verwendet werden soll. Bedeutet der Benutzer gibt z.b. 'calc:1+1' ein und dann wird die Lösung von 1+1 ausgegeben(calc ist der Befehl mit dem das Programm erkennt, dass es rechnen muss) So sieht es ungefähr aus:

Code: Alles auswählen

eingabe = input()

if ":" in eingabe:
  (befehl, rechnung) = eingabe.split(":", 1)
  if befehl == "calc":
    #jetzt der Teil mit dem Fehler!(es soll die Rechnung ausführen, aber weil die Variable ein string ist geht das natürlich nicht.
    rechnung
Meine Frage ist also ob man eine Variable zu einem Befehl machen kann oder wie man es sonst schaffen kann, dass die Rechnung ausgeführt wird! Danke für jede Hilfe

LG Cr4cker

Re: Variablen als Befehl nutzen

Verfasst: Samstag 7. Februar 2015, 17:24
von snafu
Probier mal:

Code: Alles auswählen

import ast
ast.literal_eval(rechnung)
Das ist auf die Schnelle ganz praktisch, jedoch unsauber. Besser wäre es, einen Parser für mathematische Ausdrücke zu nutzen. Dazu müsste man dann aber entsprechend tiefer in das Thema einsteigen. Und man hätte auch deutlich mehr Code zu schreiben. Außer, man findet einen fertigen Mathe-Formel-Parser, der in einem Rutsch auch das Ergebnis ausspucken kann.

Re: Variablen als Befehl nutzen

Verfasst: Samstag 7. Februar 2015, 17:33
von EyDu
@snafu: SymPy kann das. Das sind dann natürlich schon die richtig großen Geschütze.

Code: Alles auswählen

>>> import sympy.parsing.sympy_parser as parser
>>> parser.parse_expr("10+a").evalf(subs=dict(a=42))
52.0000000000000

Re: Variablen als Befehl nutzen

Verfasst: Samstag 7. Februar 2015, 17:35
von Cr4cker
Danke für die schnelle Antwort! Funktioniert super :D

LG