ganze zahlen erkennen

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
Benutzeravatar
LP640
User
Beiträge: 142
Registriert: Dienstag 29. September 2009, 14:40

hallo,
weiß jemand, wie man bei python ganze zahlen erkennen kann?
etwa so (nur als beispiel):

Code: Alles auswählen

x=1.2
if x==ganzezahl:
    print"ja"
if x!=ganzezahl:
    print"nein"
(in diesem fall müsste also "nein" rauskommen)

mfg
LP640
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

So z.B.:

Code: Alles auswählen

In [2]: isinstance(4, int)
Out[2]: True
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Benutzeravatar
DaMutz
User
Beiträge: 202
Registriert: Freitag 31. Oktober 2008, 17:25

ich würde es eher so machen:

Code: Alles auswählen

In [1]: 1.5 % 1
Out[1]: 0.5

In [2]: 1.0 % 1
Out[2]: 0.0

In [3]: 1 % 1
Out[3]: 0

In [4]: 6 % 1
Out[4]: 0
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

DaMutz hat geschrieben:ich würde es eher so machen:
Verstehe ich nicht.
Benutzeravatar
b.esser-wisser
User
Beiträge: 272
Registriert: Freitag 20. Februar 2009, 14:21
Wohnort: Bundeshauptstadt B.

Code: Alles auswählen

int(x) == x 
... oder ist das zu einfach
Benutzeravatar
DaMutz
User
Beiträge: 202
Registriert: Freitag 31. Oktober 2008, 17:25

Für mein Verständnis ist 1.0 auch eine ganze Zahl, aber wahrscheinlich war das Falsch :oops:
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

b.esser-wisser hat geschrieben:

Code: Alles auswählen

int(x) == x 
... oder ist das zu einfach
Und zu kaputt:

Code: Alles auswählen

>>> int(1.0) == 1.0
True
nomnom
User
Beiträge: 487
Registriert: Mittwoch 19. Mai 2010, 16:25

numerix hat geschrieben:
DaMutz hat geschrieben:ich würde es eher so machen:
Verstehe ich nicht.
Na, er meint, dass man prüfen kann, ob `x` eine ganze Zahl ist, wenn ein `% 1` 0 ergibt, also bei einer Teilung durch Null kein Rest bleibt. Logisch, oder? Ganzzahl != ganze Zahl IMHO
Benutzeravatar
b.esser-wisser
User
Beiträge: 272
Registriert: Freitag 20. Februar 2009, 14:21
Wohnort: Bundeshauptstadt B.

@cofi:
Wieso kaputt?
Ich hab das so verstanden, dass "1.0" als Ganze Zahl gilt.
Sonst reicht natürlich "isinstance(x, int)" bzw. stellt sich die Frage gar nicht.

Oder besser: Konzept überdenken - denn das riecht komisch
Benutzeravatar
LP640
User
Beiträge: 142
Registriert: Dienstag 29. September 2009, 14:40

wow, vielen dank für die zahlreichen antworten
ich habe aber gleich schon das nächste problem:
weiß einer, wie man zahlen abrunden kann?
also zum beipiel:

Code: Alles auswählen

>>> x=1.672
>>> round(x)
2.0
das wäre jetzt aufrunden, aber wie kann ich x auf 1 abrunden???

mfg
LP640
Benutzeravatar
LP640
User
Beiträge: 142
Registriert: Dienstag 29. September 2009, 14:40

ich habe gerade eben eine lösung gefunden:

Code: Alles auswählen

>>> x=1.672
>>> y=round(x)
>>> if y>x:
	x=x-1
	round(x)

	
1.0
:wink:
aber gibt es da einen weniger umständlichen befehl?
Benutzeravatar
mkesper
User
Beiträge: 919
Registriert: Montag 20. November 2006, 15:48
Wohnort: formerly known as mkallas
Kontaktdaten:

Der Unterschied zwischen Auf- und Abrunden beträgt 0.5. ;)
Antworten