Seite 1 von 1

eval('1/3') soll 0.33, nicht 0 ausgeben

Verfasst: Montag 17. März 2008, 23:02
von Pythonierer
Guten Abend!

Heute hab ich mir mal meine alten Programme angesehen und dabei einen Tkinter-Taschenrechner entdeckt, welcher jedoch bei der Eingabe 1/3 0 ausgibt. Im Programm wird der Textentry mit eval(textentry.get()) ausgewertet, doch leider rechnet letzteres auch mit Integern, sofern ich nicht 1.0/3 oder 1/3.0 usw. schreibe.
Was ist nun die einfachste Möglichkeit, eine Zeichenkette mit einer Rechenaufgabe unter Verwendung von Floats auszurechnen? Ich könnte natürlich das ganze aufwändig zerlegen und ausrechnen, aber vielleicht gibt es ja einen einfacheren Weg.

Danke schonmal im Voraus,

Pythonierer!

PS: eval() ist ja sowieso unsicher, aber falls es die einzige Lösung sein sollte, ist mir das in diesem Fall egal.

Verfasst: Montag 17. März 2008, 23:07
von numerix

Code: Alles auswählen

>>> from __future__ import division
>>> 1/3
0.33333333333333331

Verfasst: Montag 17. März 2008, 23:10
von Pythonierer
Danke, das ging ja schnell!
__future__ kannte ich noch gar nicht, werd ich mal anschauen, was da sonst noch so drinnen ist.
Schönen Abend noch,
ciao.

Verfasst: Dienstag 18. März 2008, 10:41
von Rebecca
Pythonierer hat geschrieben:__future__ kannte ich noch gar nicht, werd ich mal anschauen, was da sonst noch so drinnen ist.
Na, die Zukunft natuerlich. Das Modul ist besonders interessant fuer berufliche Kartenleger, Astrologen und Kaffeesatzleser. :wink:

SCNR

Verfasst: Dienstag 18. März 2008, 12:52
von el_bobo
Der Divisionsoperator wird in Python 3 so geändert, dass er das von dir gewünschte Verhalten hat.

Mit __future__ kann man dieses Feature bereits jetzt importieren.