Tutorial
Zahlen

Grundlagen

Ganzzahlen

Wenn Zahlen ohne Nachkommastellen eingegeben werden oder mit der Funktion int umgewandelt werden, sind es Ganzzahlen. Bei anderen Programmiersprachen sind normale Zahlen in der Größe beschränkt, bei Python werden die Zahlen, sobald sie größer als sys.maxint (2147483648) sind, in einen Long umgewandelt. Von der Handhabung her ändert sich beim Long nichts; nur ist er in der Größe nicht eingeschränkt.

Rechnen mit Ganzzahlen

   1 print 2+2 # Addieren Ausgabe: 4
   2 print 2-2 # Subtrahieren Ausgabe: 0
   3 print 2*2 # Multiplizieren Ausgabe: 4
   4 print 2/2 # Dividieren Ausgabe: 1

Bei Ganzzahlen ist die Division / eine Ganzzahldivision. Wenn die Division nicht aufgeht (z.B. 11/5), wird der Rest einfach weggeworfen. Falls man nur den Rest der Division will, gibt es den Modulo-Operator. Wenn man keine Ganzzahldivision will, muss man eine der beiden Zahlen in eine Fließkommazahl umwandeln (siehe nächstes Kapitel).

   1 print 11/5 # Ganzzahldivision Ausgabe: 2
   2 print 11%5 # Modulo Ausgabe: 1
   3 print 11/float(5) # Fliesskommadivision Ausgabe: 2.2
   4 print 11/5.0 # Fliesskommadivision Ausgabe: 2.2

Erzwungene Fliesskommadivision

Mit einem future-Import kann man in Python eine Fliesskommadivion erzwingen. Der Import muss in der ersten Zeile (nach der Shebang- und Codingzeile) geschrieben werden.

   1 from __future__ import division
   2 
   3 print 5/2 # Ausgabe: 2.5
   4 print 5//2 # Ausgabe: 2

Das Divisionszeichen / ist mit dem future-Import immer eine Fliesskommadivision und // eine Ganzzahldivision.

Fließkommazahlen

Zahlen die mit einem Punkt eingegeben oder mit der Funktion float umgewandelt wurden, sind Fließkommazahlen. Die Genauigkeit ist gleich wie eine double-Zahl in der Programmiersprache C. Fließkommazahlen können aufgrund der binären Rechenweise der Computer gewisse Zahlen nicht ganz genau darstellen. Diese Ungenauigkeit kann sich in Rechnungen stark vergrößern. Daher sollte man sich genauer in die Thematik der Fließkommazahlen einarbeiten (das Problem besteht in jeder Programmiersprache).

Rechnen mit Fließkommazahlen

   1 print 2.0+2.5 # Addition Ausgabe: 4.5 
   2 # Zahlen können gemischt werden (Ganz- und Fließkommazahlen)
   3 print 2.0+2   # Ausgabe: 4.0
   4 print 2.0-1.5 # Subtraktion Ausgabe: 0.5
   5 print 2.0*2.5 # Multiplikation Ausgabe: 5.0
   6 print 20.0/8 # Division Ausgabe: 2.5

Wenn eine der beiden Zahlen der Division eine Fließkommazahl ist, wird eine Fließkommadivision gemacht. Der Modulo-Operator geht auch mit Fließkommazahlen.

   1 print 20/8        # Ausgabe 2 (Achtung eine Ganzzahldivision)
   2 print 20/float(8) # Ausgabe 2.5
   3 
   4 print 20.5/4.5      # Ausgabe 4.55555555
   5 print int(20.5/4.5) # Ausgabe 4 (Die Zahl 4.5 passt 4 mal komplett in 20.5)
   6 print 20.5%4.5      # Ausgabe 2.5
   7 print 4*4.5 + 2.5   # Ausgabe 20.5

genaue Fließkommazahlen

Manchmal braucht man genaue Rechnung mit Fließkommazahlen. Dafür gibt es das Modul decimal.

   1 from decimal import Decimal
   2 
   3 print repr(0.1*3-0.3) # Ausgabe: 5.5511151231257827e-017 (ungenau)
   4 print repr(Decimal("0.1")*3-Decimal("0.3")) # Ausgabe: Decimal("0.0")

Erweiterte Funktionen

divmod(a, b)

Berechnet Quotienten und Rest einer Division. Kann z.B. gut für das Umrechnen von Zeiteinheiten genutzt werden:

   1 sek = 130823
   2 h,s = divmod(sek,3600)
   3 m,s = divmod(s,60)
   4 print "%02.fh %02.fm %02.fs" % (h, m, s)

Ergebnis:

36h 20m 23s

round(a [, n])

Rundet eine Fließkommazahl. Optional kann die Anzahl der Nachkommastellen angegeben werden:

   1 print round(5.59555)
   2 print round(5.59555, 2)

6.0
5.6

str() - in String konvertieren

Nicht nur Zahlen, sondern generell alle Objekte kann man mittels str() in einen String konvertieren.

   1 print str(123)
   2 print str(123)[-1]

Ergebnis:

 "123"
 "3"

weiter

Tutorial/Strings >>>

siehe auch

Andere Seiten zum Thema findest du in den entsprechenden Tags, hier:

Tutorial/Zahlen (last edited 2009-06-17 16:14:13 by localhost)