Python kennt drei Zahlentypen: int (ganze Zahlen), float (Kommazahlen) und complex (komplexe Zahlen). Zwischen Ganzzahlen und Kommazahlen wechselt Python beim Rechnen automatisch, wenn es nötig ist.
Ganzzahlen
Ein int kann beliebig groß werden, es gibt keinen Überlauf wie in vielen anderen Sprachen:
print(2 ** 10)
print(2 ** 100)
print(1_000_000 + 1) # Unterstriche machen große Zahlen lesbar
print(0xFF, 0b1010, 0o17) # hexadezimal, binär, oktal1024 1267650600228229401496703205376 1000001 255 10 15
Kommazahlen
Das Dezimaltrennzeichen ist der Punkt. Mit e schreibst du Zehnerpotenzen:
print(3.14 * 2)
print(2.5e3)
print(1 / 3)6.28 2500.0 0.3333333333333333
print(0.1 + 0.2)
print(0.1 + 0.2 == 0.3)
print(round(0.1 + 0.2, 2) == 0.3)0.30000000000000004 False True
Für Geldbeträge und andere exakte Rechnungen gibt es das Modul decimal:
from decimal import Decimal
print(Decimal("0.1") + Decimal("0.2"))0.3
Rechenarten
print(7 + 3) # Addition
print(7 - 3) # Subtraktion
print(7 * 3) # Multiplikation
print(7 / 2) # Division: immer ein float
print(7 // 2) # ganzzahlige Division (abgerundet)
print(7 % 2) # Rest (Modulo)
print(7 ** 2) # Potenz
print(divmod(7, 2))10 4 21 3.5 3 1 49 (3, 1)
Bei negativen Zahlen rundet // zur kleineren Zahl ab, und der Rest hat das Vorzeichen des Teilers:
print(-7 // 2)
print(-7 % 2)-4 1
Eingebaute Funktionen
print(abs(-5))
print(round(3.14159, 2))
print(round(2.5), round(3.5)) # rundet zur nächsten geraden Zahl bei .5
print(min(4, 9, 2), max(4, 9, 2))
print(sum([1, 2, 3, 4]))
print(pow(2, 8))5 3.14 2 4 2 9 10 256
Das Modul math
Für mehr Mathematik importierst du math:
import math
print(math.sqrt(16))
print(math.pi)
print(math.floor(2.7), math.ceil(2.1))
print(math.sin(math.pi / 2))
print(math.gcd(12, 18))4.0 3.141592653589793 2 3 1.0 6
Zufallszahlen
import random
random.seed(1) # macht das Ergebnis wiederholbar
print(random.randint(1, 6))
print(random.choice(["rot", "grün", "blau"]))
print(round(random.random(), 3))2 blau 0.847
Ohne seed ist das Ergebnis bei jedem Start anders; ein Würfelwurf liefert also random.randint(1, 6).
Merke
/ergibt immer einenfloat,//rundet ab,%liefert den Rest,**potenziertintist beliebig groß,floatist leicht ungenau (0.1 + 0.2)- Exakte Dezimalrechnung:
decimal.Decimal round(),abs(),min(),max(),sum()sind eingebautmathbringtsqrt,pi,floor,ceilund mehr;randomliefert Zufall
Aufgabe
Berechne aus einem Bruttopreis von 119 Euro den Nettopreis bei 19 % Mehrwertsteuer und runde auf zwei Nachkommastellen.