Seite 1 von 1
zahl auf datentyp float checken
Verfasst: Freitag 26. November 2010, 12:42
von PauleJS
ich möchte in einer if anweisung überprüfen ob ein preis dem datentyp float entspricht.
like this pseudocode:
Re: zahl auf datentyp float checken
Verfasst: Freitag 26. November 2010, 12:44
von derdon
do it like this python code:
Aber denke daran, dass solche Überprüfungen zu vermeiden sind und Duck Typing in Python heilig ist.
Re: zahl auf datentyp float checken
Verfasst: Freitag 26. November 2010, 12:52
von PauleJS
derdon hat geschrieben:do it like this python code:
Aber denke daran, dass solche Überprüfungen zu vermeiden sind und Duck Typing in Python heilig ist.
hierbei werden zahlen wir 99.00 oder 3424.34 richtig erkannt, aber wenn ich 3,999.99 eingebe nicht
gibt es da noch eine spezielle lösung von python für geldbeträge??
Re: zahl auf datentyp float checken
Verfasst: Freitag 26. November 2010, 13:04
von PauleJS
PauleJS hat geschrieben:derdon hat geschrieben:do it like this python code:
Aber denke daran, dass solche Überprüfungen zu vermeiden sind und Duck Typing in Python heilig ist.
hierbei werden zahlen wir 99.00 oder 3424.34 richtig erkannt, aber wenn ich 3,999.99 eingebe nicht
gibt es da noch eine spezielle lösung von python für geldbeträge??
gibt isinstance(x, float) eigentlich ein true oder false zurück? in meiner if anweisung funktioniert diese nicht
Re: zahl auf datentyp float checken
Verfasst: Freitag 26. November 2010, 13:08
von busfahrer
Re: zahl auf datentyp float checken
Verfasst: Freitag 26. November 2010, 13:10
von PauleJS
busfahrer hat geschrieben:Hallo
Gruß...busfahrer
Code: Alles auswählen
class price(object):
def set_price (self, value):
print value
if isinstance(value, float):
print "richtig"
else:
print 'Error'
p = price()
p.set_price('22.39')
so gehts aber nicht
Re: zahl auf datentyp float checken
Verfasst: Freitag 26. November 2010, 13:12
von Xynon1
klar, du gibst ja auch einen String an und keine Float Zahl.
Sind dir die Datentypen in Python bekannt ?
Re: zahl auf datentyp float checken
Verfasst: Freitag 26. November 2010, 13:20
von PauleJS
Xynon1 hat geschrieben:klar, du gibst ja auch einen String an und keine Float Zahl.
Sind dir die Datentypen in Python bekannt ?
oja, bin zwar erst python anfänger aber das hätte ich sehen müssen ^^
wenn ich aber zb den betrag 200.00 eingebe wird dieser nur als 200.0 gespeichert, wie kann ich einfach festlegen das es immer 2 stellen nach den punkt geben soll, aber auch nicht mehr
Re: zahl auf datentyp float checken
Verfasst: Freitag 26. November 2010, 13:24
von Xynon1
Geldeinheiten, kennt Python nicht, wäre auch Blödsinn, da diese nur in Ausgaben benötigt werden.
Aber wenn du eine Ausgabe zB per print machst, musst/kannst du die Zahl in einen String umwandeln und hier erst muss es wie Geld aussehen und dafür gibt es String Formats.
Hier der Link zur Doku:
http://docs.python.org/library/string.h ... matstrings
Re: zahl auf datentyp float checken
Verfasst: Freitag 26. November 2010, 13:26
von /me
PauleJS hat geschrieben:ich möchte in einer if anweisung überprüfen ob ein preis dem datentyp float entspricht.
Arbeite einfach mit dem Datentyp. Schau dir folgenden Code an:
Code: Alles auswählen
foo = float(1.23)
foo = float('2.34')
foo = float('abc')
Die ersten beiden Zeilen werden problemlos verarbeitet. Im dritten Fall bekommst du einen ValueError. Diesen Fehler kannst du abfangen und zwar entweder dort wo er entsteht oder auch irgendwo darüber in der Aufrufhierarchie. Schau dir mal
Handling Exceptions im Tutorial an.
Zudem solltest du dir überlegen, ob es wirklich ein float sein muss. Es könnte ja auch ein
Decimal sein und deine Verarbeitung würde immer noch funktionieren.
Re: zahl auf datentyp float checken
Verfasst: Freitag 26. November 2010, 13:27
von PauleJS
Xynon1 hat geschrieben:Geldeinheiten, kennt Python nicht, wäre auch Blödsinn, da diese nur in Ausgaben benötigt werden.
Aber wenn du eine Ausgabe zB per print machst, musst/kannst du die Zahl in einen String umwandeln und hier erst muss es wie Geld aussehen und dafür gibt es String Formats.
könnte/sollte ich das genauso für das format datum machen? sprich einfach als string speichern und bei der ausgabe format festlegen via string format?
Re: zahl auf datentyp float checken
Verfasst: Freitag 26. November 2010, 13:30
von /me
PauleJS hat geschrieben:wenn ich aber zb den betrag 200.00 eingebe wird dieser nur als 200.0 gespeichert, [...]
Es kann auch sein, dass er als 200.000000000000013 gespeichert wird und du es nur bei der Ausgabe nicht siehst. Gleitkommazahlen sind nicht präzise.
Unter
http://www.python-forum.de/viewtopic.php?f=1&t=24787 findest du einen Thread zum Thema.
Re: zahl auf datentyp float checken
Verfasst: Freitag 26. November 2010, 13:30
von PauleJS
/me hat geschrieben:PauleJS hat geschrieben:ich möchte in einer if anweisung überprüfen ob ein preis dem datentyp float entspricht.
Arbeite einfach mit dem Datentyp. Schau dir folgenden Code an:
Code: Alles auswählen
foo = float(1.23)
foo = float('2.34')
foo = float('abc')
Die ersten beiden Zeilen werden problemlos verarbeitet. Im dritten Fall bekommst du einen ValueError. Diesen Fehler kannst du abfangen und zwar entweder dort wo er entsteht oder auch irgendwo darüber in der Aufrufhierarchie. Schau dir mal
Handling Exceptions im Tutorial an.
Zudem solltest du dir überlegen, ob es wirklich ein float sein muss. Es könnte ja auch ein
Decimal sein und deine Verarbeitung würde immer noch funktionieren.
gibt es denn einen unterschied bei der verarbeitung zwischen dec und float? float ist mir punkt und dec mit komma oder nicht?
Re: zahl auf datentyp float checken
Verfasst: Freitag 26. November 2010, 13:32
von /me
PauleJS hat geschrieben:gibt es denn einen unterschied bei der verarbeitung zwischen dec und float? float ist mir punkt und dec mit komma oder nicht?
Schau mal in mein Posting darüber. Kurz gesagt: Decimal ist präzise, float nicht.
Re: zahl auf datentyp float checken
Verfasst: Freitag 26. November 2010, 13:36
von PauleJS
/me hat geschrieben:PauleJS hat geschrieben:gibt es denn einen unterschied bei der verarbeitung zwischen dec und float? float ist mir punkt und dec mit komma oder nicht?
Schau mal in mein Posting darüber. Kurz gesagt: Decimal ist präzise, float nicht.
ok verstehe!
dann werde ich doch lieber dec nutzen
danke!
Re: zahl auf datentyp float checken
Verfasst: Freitag 26. November 2010, 13:41
von PauleJS
bei dem datum hatte ich vor folgendermaßen zu machen
Code: Alles auswählen
import time
date = input('Date (m/dd/yyyy): ')
try:
valid_date = time.strptime(date, '%m/%d/%Y')
except ValueError:
print('Invalid date!')
ist das so sinnvoll?
Re: zahl auf datentyp float checken
Verfasst: Freitag 26. November 2010, 13:43
von Xynon1
Es gibt auch ein
datetime Modul.
Re: zahl auf datentyp float checken
Verfasst: Freitag 26. November 2010, 13:46
von nomnom
PauleJS hat geschrieben:bei dem datum hatte ich vor folgendermaßen zu machen
Code: Alles auswählen
import time
date = input('Date (m/dd/yyyy): ')
try:
valid_date = time.strptime(date, '%m/%d/%Y')
except ValueError:
print('Invalid date!')
ist das so sinnvoll?
Nur wenn du Python3 benutzt.
Re: zahl auf datentyp float checken
Verfasst: Freitag 26. November 2010, 13:48
von PauleJS
stimmt datetime ist ja ein traum! super einfach
das wärs auch schon!
VIELEN DANK EUCH ALLEN