+ Antworten
Ergebnis 1 bis 4 von 4
  1. #1
    Hauptgefreiter Avatar von Nudelholz
    Registriert seit
    24.01.2007
    Ort
    Deutschland
    Beiträge
    222


    • Systeminfo
      • Motherboard:
      • Asus Maximus II Formula
      • CPU:
      • E8500 @ 2 GHz @ 0.824 V
      • Gehäuse:
      • Lian Li PC-A17A
      • RAM:
      • A-Data Vitesta Extreme 8GB
      • Grafik:
      • Sapphire Radeon X1550
      • Monitor:
      • HP w2207h
      • Sound:
      • X-Fi Xtreme Music
      • Betriebssystem:
      • Windows 7 Professional x64
      • Handy:
      • iPhone 4

    Standard Python: Operator als Variable ?

    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...

    Geht das bei Python nicht oder übersehe ich irgendwas ?


    Grüße
    Geändert von Nudelholz (28.07.10 um 16:47 Uhr)

  2. #2
    Flottillenadmiral Avatar von McGizmo
    Registriert seit
    05.02.2004
    Ort
    Am Bodensee...
    Beiträge
    6.057


    • Systeminfo
      • Motherboard:
      • MSI
      • CPU:
      • Intel
      • Systemname:
      • Deine Mutti
      • Kühlung:
      • Wasser
      • Grafik:
      • NVidia
      • Notebook:
      • Dell
      • Photoequipment:
      • Nikon

    Standard

    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 ...

  3. #3
    Kapitän zur See Avatar von hydrotoxin
    Registriert seit
    15.04.2008
    Ort
    OÖ, Steyr
    Beiträge
    3.757


    • Systeminfo
      • Motherboard:
      • Asus Crosshair IV
      • CPU:
      • Phenom II X6 1100T@3.6
      • Systemname:
      • Prime Slave Deluxe
      • Kühlung:
      • Luftkühlung
      • Gehäuse:
      • HAF-932
      • RAM:
      • 16GB Corsair Venegance@1600 C9
      • Grafik:
      • Sapphire Radeon HD5870
      • Storage:
      • Ubuntu @X-25M / Vista@HD501LJ / Stuff@HD153WI
      • Monitor:
      • 2x iiyama ProLite E2607WS-1
      • Netzwerk:
      • onboard...
      • Sound:
      • Soundblaster X-FI
      • Netzteil:
      • Corsair HX750
      • Betriebssystem:
      • Ubuntu Lucid / Vista 64bit
      • Notebook:
      • Acer Aspire 5920G
      • Handy:
      • HTC Magic

    Standard

    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)
    Geändert von hydrotoxin (29.07.10 um 13:53 Uhr)

  4. #4
    Toc
    Toc ist offline
    Stabsgefreiter
    Registriert seit
    20.11.2006
    Ort
    HH
    Beiträge
    378


    Standard

    operator als string übergeben und durch case / if else unterscheiden.
    Ist IMO auch besser, da du so vernünftig Fehlerfälle behandeln kannst.
    bye Toc


    (((((
    (._. )
    (')(')_)

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein