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

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
Pythonierer
User
Beiträge: 41
Registriert: Samstag 13. Januar 2007, 15:26

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.
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Code: Alles auswählen

>>> from __future__ import division
>>> 1/3
0.33333333333333331
Pythonierer
User
Beiträge: 41
Registriert: Samstag 13. Januar 2007, 15:26

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.
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

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
Offizielles Python-Tutorial (Deutsche Version)

Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
el_bobo
User
Beiträge: 23
Registriert: Dienstag 15. Januar 2008, 02:11

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