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:

Code: Alles auswählen

if price is float():
           print "stimmt"

Re: zahl auf datentyp float checken

Verfasst: Freitag 26. November 2010, 12:44
von derdon
do it like this python code:

Code: Alles auswählen

isinstance(x, float)
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:

Code: Alles auswählen

isinstance(x, float)
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:

Code: Alles auswählen

isinstance(x, float)
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
Hallo

Code: Alles auswählen

>>> f = 1.10
>>> isinstance(f, float)
True
Gruß...busfahrer

Re: zahl auf datentyp float checken

Verfasst: Freitag 26. November 2010, 13:10
von PauleJS
busfahrer hat geschrieben:Hallo

Code: Alles auswählen

>>> f = 1.10
>>> isinstance(f, float)
True
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