3.1 Zahlentypen: int
, float
,
complex
Python bietet mehrere Zahlentypen, die sich für verschiedene Aufgaben und Datenverarbeitung eignen. Wir haben bereits die Datentypen
int
, float
, complex
sowie die booleschen
Typen bool
erwähnt, die Unterklassen von Ganzzahlen sind. Schauen wir uns diese Typen nun genauer an.
int
(Ganze Zahlen):
Dies ist wahrscheinlich der am häufigsten verwendete Zahlentyp in Python. Ganze Zahlen können positiv oder negativ sein und haben keine Dezimalstellen. Python unterstützt beliebige Genauigkeit, was bedeutet, dass es praktisch keine Einschränkungen für die Größe der Zahlen gibt, die du verarbeiten kannst, abgesehen von den Speicherbeschränkungen deines Computers.
float
(Gleitkommazahlen):
Diese Zahlen werden verwendet, um reelle Zahlen darzustellen und können Dezimalstellen enthalten. Python implementiert Gleitkommazahlen gemäß dem IEEE 754-Standard für Double-Precision, was eine Genauigkeit von etwa 15 Dezimalstellen nach dem Komma bietet.
complex
(Komplexe Zahlen):
Komplexe Zahlen haben einen Real- und einen Imaginärteil. Beide werden
als Gleitkommazahlen dargestellt. In Python wird der imaginäre Teil durch das Suffix j
oder J
bezeichnet. Zum Beispiel kann eine komplexe Zahl so erstellt werden:
complex_number = 3 + 5j
bool
(Boolesche Werte):
In Python sind True
und False
spezialisierte
Versionen von Ganzzahlen und funktionieren wie 1 und 0 entsprechend. Dadurch können sie in
arithmetischen Operationen und anderen mathematischen Ausdrücken verwendet werden.
Arithmetische Operationen:
Python unterstützt alle grundlegenden arithmetischen Operationen, einschließlich Addition, Subtraktion, Multiplikation, Division, Ganzzahl-Division, Modulo und Potenzierung. Zum Beispiel:
- Addition: 3 + 2
- Subtraktion: 5 - 2
- Multiplikation: 2 * 3
- Division: 7 / 2
- Ganzzahl-Division: 7 // 2
- Modulo: 7 % 2
- Potenzierung: 2 ** 3
Typkonvertierung:
Wir haben schon über Typkonvertierung (oder -umwandlung) gesprochen.
Zahlen können mithilfe von Umwandlungsfunktionen in andere Typen konvertiert werden,
wie int()
, float()
und
complex()
.
Einige Aspekte der Typkonvertierung haben wir bereits behandelt, andere werden wir ausführlicher in späteren Vorträgen besprechen.
3.2 Pseudozufallszahlen
Manchmal steht ein Programmierer vor scheinbar einfachen Aufgaben: „einen zufälligen Film für den Abend aus einer bestimmten Liste auswählen“, „den Gewinner einer Lotterie ziehen“, „eine Playlist beim Schütteln des Smartphones mischen“, „eine Zufallszahl für die Verschlüsselung einer Nachricht wählen“. Dabei stellt sich jedes Mal eine sehr logische Frage: Wie generiert man diese Zufallszahl?
Eine „echte“ Zufallszahl zu erzeugen, ist ziemlich schwierig. Bis zu dem Punkt, dass in Computer spezielle mathematische Koprozessoren eingebaut werden, die solche Zahlen generieren können, die alle Anforderungen an „echte Zufälligkeit“ erfüllen.
Deshalb haben Programmierer ihre eigene Lösung entwickelt – Pseudozufallszahlen. Pseudozufallszahlen sind eine Folge, deren Zahlen auf den ersten Blick zufällig erscheinen, aber ein Experte kann bei genauer Analyse bestimmte Muster erkennen. Für die Verschlüsselung geheimer Dokumente sind solche Zahlen nicht geeignet, aber für die Simulation eines Würfelwurfs in einem Spiel durchaus.
Es gibt viele Algorithmen zur Erzeugung von Pseudozufallszahlfolgen und fast alle von ihnen generieren die nächste Zufallszahl basierend auf der vorherigen und einigen anderen Hilfszahlen.
Zum Beispiel gibt dieses Programm 1000 einzigartige Zahlen aus:
a = 41
c = 11119
m = 11113
seed = 1
def get_next_random():
global seed
seed = (a * seed + c) % m
return seed
for t in range(1000):
x = get_next_random()
print(x)
Übrigens, wir sprechen nicht von Pseudozufallszahlen, sondern von einer Folge solcher Zahlen. Denn anhand einer einzigen Zahl kann man nicht erkennen, ob sie zufällig ist oder nicht.
Eine Zufallszahl kann auf verschiedene Weise erzeugt werden:
def get_random_number():
return 4 # das ist definitiv eine zufällige Zahl (ich habe sie mit Würfeln geworfen), siehe "Dice Joke"
3.3 Bibliothek random
In Python gibt es eine eingebaute Bibliothek random, mit der du sicherlich gerne arbeiten wirst. Wie du vielleicht schon aus dem Namen erraten hast, kannst du mit dieser Bibliothek [pseudo]zufällige Zahlen generieren.
Die Bibliothek random
, auch wenn sie eingebaut ist, ist dennoch eine separate Bibliothek, also muss sie vor der Verwendung in unseren Code importiert werden.
Das geschieht mit dem Schlüsselwort import
. Beispiel:
import random
Die Bibliothek random bietet viele interessante Methoden, aber heute lernen wir
nur zwei davon kennen: Methode random()
und
Methode randint()
. Sie erfüllen ähnliche, aber unterschiedliche Aufgaben:
Methode random.random()
:
Diese Methode gibt eine zufällige Gleitkommazahl zwischen 0.0 und 1.0 zurück. Die Zahlen werden gleichmäßig in diesem Bereich generiert. Das bedeutet, dass jede Zahl innerhalb des Intervalls die gleiche Wahrscheinlichkeit hat, ausgewählt zu werden.
import random
probability = random.random()
print("Zufällige Wahrscheinlichkeit:", probability)
Methode random.randint(a, b):
Diese Funktion gibt eine zufällige ganze Zahl im Bereich von
a
bis b
einschließlich zurück. Im Unterschied zu
random.random()
, die eine zufällige Gleitkommazahl im Bereich von 0 bis 1 zurückgibt, wird randint()
verwendet, wenn eine ganze Zahl ausgewählt werden soll. Zum Beispiel,
random.randint(1, 10)
kann jede ganze Zahl von
1
bis 10
zurückgeben, einschließlich beider Endwerte.
import random
dice_roll = random.randint(1, 6) # Simulation eines Würfelwurfs
print("Gewürfelte Zahl:", dice_roll)
Das sind sehr nützliche und interessante Methoden, also nutzt sie ruhig und viel.
3.4 Bibliothek math
Also, wenn wir schon dabei sind, lass mich dich mit einer weiteren interessanten
Bibliothek bekanntmachen. Das ist die Bibliothek math
. Sie enthält grundlegende
mathematische Funktionen und Konstanten, wie die Zahlen π und e.
Und ebenso wie die Bibliothek random
muss sie vor der Verwendung importiert werden:
import math
Hier ist eine Tabelle mit den Hauptfunktionen und Konstanten der Bibliothek
math
in Python:
Funktion/Konstante | Beschreibung |
---|---|
math.pi | Konstante π, ungefähr 3.14159 |
math.e | Basis des natürlichen Logarithmus, ungefähr 2.71828 |
math.sqrt(x) | Gibt die Quadratwurzel von x zurück |
math.exp(x) | Gibt e hoch x zurück |
math.log(x[, base]) | Gibt den Logarithmus von x zur Basis base zurück, wenn base angegeben ist; andernfalls den natürlichen Logarithmus. |
math.cos(x) | Gibt den Kosinus von x zurück, wobei x in Radiant angegeben ist |
math.sin(x) | Gibt den Sinus von x zurück, wobei x in Radiant angegeben ist |
math.tan(x) | Gibt den Tangens von x zurück, wobei x in Radiant angegeben ist |
math.ceil(x) | Rundet die Zahl auf das nächste Ganze auf |
math.floor(x) | Rundet die Zahl auf das nächste Ganze ab |
math.factorial(x) | Gibt die Fakultät von x zurück |
Auch wenn du nicht so sehr an Mathe interessiert bist und diese Funktionen in den nächsten 10 Jahren nicht verwenden willst, gibt es hier mindestens drei sehr nützliche:
sqrt()
— Quadratwurzel einer Zahlceil()
— Aufrunden auf das nächste Ganzefloor()
— Abrunden auf das nächste Ganze
Beispiele:
import math
number = 9.7
rounded_up = math.ceil(number) # Rundet auf, Ergebnis 10
rounded_down = math.floor(number) # Rundet ab, Ergebnis 9
print("Aufgerundete Zahl:", rounded_up)
print("Abgerundete Zahl:", rounded_down)
GO TO FULL VERSION