Python: Operator als Variable ?

Nudelholz

Enthusiast
Thread Starter
Mitglied seit
24.01.2007
Beiträge
251
Ort
BW
Hi Leute,

ich sitze hier gerade an einem Script und frage mich warum ich bei mathematischen Rechnungen
den Operator nicht durch eine Variable ersetzen kann!
Hab schon Google gequält und mehrere Foren abgeklappert, aber ich fand nirgendswo eine passende Lösung.

Also z.B. so: ergebnis = operand1 operator operand2

Ich bräuchte eine Funktion der ich beide Operatoren und den Operator übergeben kann. Etwas in dieser Art:

Code:
def rechnung(op1, op2, operator):
    ergebnis = op1 operator op2
    print "Die Rechnung lautet: %s %s %s = %s" %(op1, operator, op2, ergebnis)

Beispielhafter Aufruf der Funktion:
Code:
rechnung(5,4,"+")
>> Die Rechnung lautet: 5 + 4 = 9


Die ganzen Variablen werden danach noch in ein Array gesteckt und einer anderen Funktion übergeben.

Da kommt immer ein Syntax Error... :shake:

Geht das bei Python nicht oder übersehe ich irgendwas ?


Grüße
 
Zuletzt bearbeitet:
Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
Ne, tust du wohl nicht. Mir fällt so auf Anhieb keine Sprache ein, bei der das in der Form möglich wäre, bzw. bei der Operatoren Objekte sind ... Ich bin kein Python-Mensch aber du wirst kaum umher kommen, z.B. für jeden Operator eine Funktion zu definieren ...
 
Für normal versuche ich exec zu meiden, aber in diesem fall ists denk ich um einiges weniger aufwand/code als für jeden operator ne eigene funktion zu verwenden ^^

Code:
def rechnung(op1, op2, operator):
    exec("ergebnis="+str(op1)+operator+str(op2))
    print "Die Rechnung lautet: %s %s %s = %s" %(op1, operator, op2, ergebnis)
 
Zuletzt bearbeitet:
operator als string übergeben und durch case / if else unterscheiden.
Ist IMO auch besser, da du so vernünftig Fehlerfälle behandeln kannst.
 
Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh