Home | Lehre | Videos | Texte | Vorträge | Software | Person | Impressum, Datenschutzerklärung | ![]()
Stand: 2025-04-02
weitgehend formuliert von Claude 3 Opus, verbessert von ChatGPT 4o,
redigiert/korrigiert von Jörn Loviscach
Python ist eine dynamisch typisierte Sprache, im Gegensatz zu C, wo Variablen ausdrücklich mit einem Datentyp deklariert werden müssen. In Python werden Datentypen automatisch zugewiesen und können sich während der Laufzeit ändern. Trotzdem gibt es in Python ähnliche Datentypen wie in C, die man kennen sollte.
Ganzzahlen werden in Python mit dem Datentyp int
dargestellt. Anders als in C gibt es keine Unterscheidung zwischen zum
Beispiel short, int, int32_t oder
long long. Python wählt automatisch die passende Größe für
eine Ganzzahl, selbst für Zahlen mit Tausenden von Stellen.
x = 42
y = -1337Gleitkommazahlen werden in Python mit dem Datentyp float
dargestellt. Auch hier gibt es keine Unterscheidung zwischen
float und double wie in C.
x = 3.14
y = -2.71828Python und C haben einige Unterschiede in der Syntax und
Funktionsweise, insbesondere bei den Operatoren ++,
-- und **.
In C werden die Operatoren ++ und -- häufig
verwendet, um Variablen um 1 zu erhöhen oder zu verringern.
Beispiel:
int i = 5;
i++; // i ist jetzt 6
i--; // i ist wieder 5In Python existieren diese Operatoren nicht. Stattdessen verwendet
man die Schreibweise += 1 oder -= 1, um eine
Variable um 1 zu erhöhen oder zu verringern. Beispiel:
i = 5
i += 1 # i ist jetzt 6
i -= 1 # i ist wieder 5In C wird die Potenzierung mit der Funktion pow() aus
der math.h-Bibliothek durchgeführt. Beispiel:
#include <math.h>
double result = pow(2, 3); // result ist 8Python hingegen verwendet den Operator ** für die
Potenzierung. Beispiel:
result = 2 ** 3 # result ist 8Die Verwendung von ** ist oft intuitiver und führt zu
besser lesbarem Code.
In C liefert die Division für ganzzahlige Typen wieder ganze Zahlen,
zum Beispiel wird 7/3 zu 2. Python liefert
hier dagegen eine Gleitkommazahl. Um in Python ganzzahlige
Divisionsergebnisse zu erhalten, muss man den Doppelstrich wie
7//3 schreiben.
Boolesche Werte werden in Python mit dem Datentyp bool
dargestellt. Sie können die Werte True (1) oder
False (0) annehmen, was C mit true und
false spätestens seit C23 genauso macht.
x = True
y = FalsePython unterstützt die logischen Operatoren not,
and und or, die wie !,
&& und || in C funktionieren:
not negiert eine Bedingung. Wenn die Bedingung wahr
ist, wird das Ergebnis falsch, und umgekehrt.and gibt nur dann True zurück, wenn beide
Bedingungen wahr sind.or gibt True zurück, wenn mindestens eine
der Bedingungen wahr ist. Es dürfen auch beide wahr sein (inklusives Oder).
Hier sind einige Beispiele:
if not bedingung:
# Anweisungen, die ausgeführt werden, wenn die Bedingung falsch ist
if bedingung1 and bedingung2:
# Anweisungen, die ausgeführt werden, wenn beide Bedingungen wahr sind
if bedingung1 or bedingung2:
# Anweisungen, die ausgeführt werden, wenn mindestens eine der Bedingungen wahr istHier ist ein Beispiel für einen komplizierteren Ausdruck mit den
logischen Operatoren not, and und
or in Python:
x = 10
y = 20
z = 30
result = not x > 5 or y < 25 and z == 30
print(result)Python führt erst die Vergleiche und dann die logischen Operationen
aus, in der Reihenfolge not → and →
or. Es rechnet also so, als ob diese Klammern gesetzt
worden wären:
(not (x > 5)) or ((y < 25) and (z == 30)) Wenn man
eine andere Auswertungsreihenfolge haben will, muss man selbst Klammern
setzen.
Analog zu C wertet Python bei x and y das y
nicht mehr aus, wenn x schon False ist
(Short-Circuit
). Ebenso wird bei x or y das
y nicht mehr ausgewertet, wenn x schon
True ist. Dadurch lassen sich z. B. Bedingungen wie
ist_Ressource_verfügbar() and frage_Resource_ab()
schreiben: Die Funktion zur Abfrage wird nur aufgerufen, wenn die
Ressource verfügbar ist.
Der Ablauf des kleinen Programms oben ist also:
Zuerst wird die Variable x mit dem Wert 10,
y mit dem Wert 20 und z mit dem Wert 30
initialisiert.
Der komplexe Ausdruck
not x > 5 or y < 25 and z == 30 wird ausgewertet:
x > 5 ergibt True, da 10 größer als 5
ist.not x > 5 ergibt das Gegenteil davon, also
False.or steht damit ein False, so
dass das Ergebnis des or noch nicht klar ist; also muss der
Teil rechts vom or ausgewertet werden.y < 25 ergibt True, da 20 kleiner als
25 ist.and steht damit ein True, so
dass das Ergebnis des and noch nicht klar ist; also muss
der Teil rechts vom and ausgewertet werden.z == 30 ergibt True.True and True ergibt True.False or True ergibt True.Das Ergebnis True wird auf der Konsole
ausgegeben.
Seit Python 3.5 gibt es die Möglichkeit, Variablen mit sogenannten
Type Hints
zu versehen. Diese geben an, welchen Datentyp eine
Variable erwartet. Type Hints werden von Python jedoch erstens nicht
erzwungen und zweitens bei der Ausführung ignoriert. Sie dienen
hauptsächlich zur besseren Lesbarkeit und Verständlichkeit des Codes
sowie zum Fehlerfinden, meist in der Entwicklungsumgebung durch rote
Unterkringelungen oder Ähnliches erkennbar.
x: int = 42
y: float = 3.14
z: bool = TrueType Hints können auch verwendet werden, um anzugeben, dass eine Variable mehrere Datentypen annehmen kann:
x: int | str = 42
x = 'Hallo' # gültig, da x auch String sein kannDie Namen (Bezeichner) von Variablen, Funktionen, Klassen usw. in
Python dürfen aus Buchstaben (auch Unicode), Ziffern und Unterstrichen
bestehen, dürfen aber nicht mit einer Ziffer beginnen. Außerdem sind die
reservierten Schlüsselwörter wie for, class
oder def als Namen verboten.
Erlaubte Namen sind z. B. π oder 变量.
Ungültig sind z. B. 10Bestellungen (beginnt mit Ziffer),
erstes Beispiel (Leerzeichen), Gesamt-Liste
(Bindestrich) oder verfasse✉️ (unerlaubtes Symbol).
In Python sind Strings eine grundlegende Datenstruktur zur Speicherung und Manipulation von Textdaten. Im Gegensatz zu C müssen Strings in Python nicht als Arrays von Zeichen definiert werden. Strings können in Python alle (Unicode-)Zeichen enthalten, insbesondere kyrillische oder arabische Zeichen oder Emojis.
Stringliterale, also Buchstabe für Buchstabe wörtlich angegebene
Zeichenketten, werden in Python in einfachen ('...') oder
doppelten ("...") Anführungszeichen eingeschlossen.
(Achtung: In C erzeugt man mit einfachen Anführungszeichen nur
Einzelzeichen!) Strings können mit dem +-Operator
aneinandergehängt (konkateniert
) werden:
name = 'Alex'
greeting = 'Hallo, ' + name + '!'
print(greeting) # Ausgabe: Hallo, Alex!Python bietet eine Vielzahl von eingebauten Funktionen zur Manipulation von Strings. Hier sind einige häufig verwendete Funktionen:
len(string): Gibt die Länge des Strings zurück.string.lower(): Konvertiert den String in
Kleinbuchstaben.string.upper(): Konvertiert den String in
Großbuchstaben.string.strip(): Entfernt Leerzeichen am Anfang und Ende
des Strings.string.split(separator): Teilt den String anhand eines
Trennzeichens in eine Liste von Teilstrings.Beispiel:
text = ' Hallo, Welt! '
print(len(text)) # Ausgabe: 15
print(text.lower()) # Ausgabe: ' hallo, welt! '
print(text.strip()) # Ausgabe: 'Hallo, Welt!'
print(text.split(', ')) # Ausgabe: [' Hallo', 'Welt! ']Für Strings wird der Typ str verwendet:
name: str = 'Alex'Mit f-Strings lassen sich Ausdrücke direkt in wortwörtlich angegebene
Strings (Stringliterale
) einbetten, indem sie in geschweifte
Klammern {} eingeschlossen werden:
name = 'Alex'
age = 25
print(f'Mein Name ist {name} und ich bin {2 * age} Jahre alt.')
# Ausgabe: Mein Name ist Alex und ich bin 50 Jahre alt.In den geschweiften Klammern der f-Strings lassen sich auch
Formatierungsanweisungen geben. Zum Beispiel platziert
{wert:8.2f} den Inhalt der Gleitkommavariablen
wert mit zwei Nachkommastellen in einem Feld mit 8 Zeichen
Breite.
In Python werden bedingte Anweisungen ähnlich wie in C verwendet,
allerdings mit einer etwas anderen Syntax. Anstatt geschweifte Klammern
{} zu verwenden, nutzt Python Einrückungen, um den
Gültigkeitsbereich eines Blocks festzulegen.
Eine if-Anweisung in Python sieht folgendermaßen
aus:
if bedingung:
# Anweisungen, die ausgeführt werden, wenn die Bedingung wahr ist
anweisung1
anweisung2Wenn die Bedingung wahr ist, werden die eingerückten Anweisungen
ausgeführt. Im Gegensatz zu C muss keine runde Klammer ()
um die Bedingung gesetzt werden.
Mit elif (kurz für else if
) können weitere
Bedingungen überprüft werden, falls die vorherige Bedingung nicht
erfüllt war:
if bedingung1:
# Anweisungen für bedingung1
elif bedingung2:
# Anweisungen für bedingung2
else:
# Anweisungen, wenn keine der Bedingungen erfüllt ist?: in C und if-else in PythonIn C gibt es den ternären Operator ?:, der eine kompakte
Schreibweise für einfache if-else-Anweisungen ermöglicht.
Hier ein Beispiel:
int a = 5;
int b = 10;
int max = (a > b) ? a : b;In diesem Fall wird max der Wert von a
zugewiesen, wenn a > b wahr ist, andernfalls erhält
max den Wert von b. Der ternäre Operator ist
eine prägnante Möglichkeit, eine einfache Bedingung auszuwerten und
basierend auf dem Ergebnis einen Wert zuzuweisen.
In Python gibt es eine ähnliche Syntax wie den ternären Operator, die
als conditional expression
bezeichnet wird:
a = 5
b = 10
max = a if a > b else bPython bietet zwei Arten von Schleifen: while-Schleifen
und for-Schleifen. Beide ermöglichen es, einen Codeblock
wiederholt auszuführen, bis eine bestimmte Bedingung erfüllt ist.
Eine while-Schleife führt einen Codeblock aus, solange
eine Bedingung wahr ist. Die Syntax ist ähnlich wie in C:
while bedingung:
# Anweisungenfor-Schleifen werden verwendet, um über eine Sequenz von
Elementen zu iterieren. In Python ist die Syntax etwas anders als in
C:
for element in sequenz:
# AnweisungenDie Funktion range wird oft in Kombination mit
for-Schleifen verwendet, um eine Sequenz von Zahlen zu
generieren:
for i in range(start, stop, step):
# Anweisungenstart: Die Startzahl (falls nicht angegeben: 0)stop: Die Endzahl (dieser Wert gelangt nicht
mehr in die Schleife)step: Die Schrittweite (falls nicht angegeben: 1)break und continue sind zwei Anweisungen,
die den Ablauf von Schleifen beeinflussen können:
break: Beendet die Schleife vorzeitig und setzt die
Ausführung nach der Schleife fort.continue: Überspringt den Rest des aktuellen
Schleifendurchlaufs und beginnt mit dem nächsten Durchlauf.Beispiel für break:
for i in range(1, 6):
if i == 4:
break
print(i)Ausgabe:
1
2
3
Beispiel für continue:
for i in range(1, 6):
if i == 3:
continue
print(i)Ausgabe:
1
2
4
5
Schleifen können ineinander verschachtelt werden, um komplexere
Iterationen durchzuführen. Hier ist ein Beispiel für zwei ineinander
verschachtelte for-Schleifen:
for i in range(1, 4):
for j in range(1, 4):
print(f'({i}, {j})', end=' ')
print()Ausgabe:
(1, 1) (1, 2) (1, 3)
(2, 1) (2, 2) (2, 3)
(3, 1) (3, 2) (3, 3)
Funktionen sind wie in C ein grundlegendes Konzept in Python, das es ermöglicht, Code zu strukturieren, wiederzuverwenden und lesbarer zu machen.
In Python werden Funktionen mit dem Schlüsselwort def
definiert, gefolgt vom Funktionsnamen und den Parametern in Klammern.
Der Funktionskörper wird eingerückt und enthält den Code, der ausgeführt
wird, wenn die Funktion aufgerufen wird.
def greet(name):
print(f'Hallo, {name}!')Um eine Funktion aufzurufen, schreibt man den Funktionsnamen gefolgt von Klammern und den erforderlichen Argumenten.
greet('Alex') # Ausgabe: Hallo, Alex!Funktionen in Python können Werte mit dem Schlüsselwort
return zurückgeben. Wenn keine solche ausdrückliche
Rückgabeanweisung vorhanden ist oder wenn return ohne Wert
dahinter steht, gibt die Funktion None zurück.
def add(a, b):
return a + b
result = add(3, 5)
print(result) # Ausgabe: 8Sobald ein return-Statement in einer Python-Funktion
erreicht wird, wird die Ausführung der Funktion sofort beendet. Alle
nachfolgenden Anweisungen in der Funktion werden nicht mehr
ausgeführt.
def beispiel_funktion():
print('Vor dem return')
return
print('Nach dem return') # Wird nicht ausgeführt
beispiel_funktion()Ausgabe:
Vor dem return
def multiply(a: int, b: int) -> int:
return a * b
result = multiply(4, 6)
print(result) # Ausgabe: 24Python bietet das eingebaute math-Modul, das eine
Vielzahl von mathematischen Funktionen bereitstellt. Um es zu verwenden,
muss es zunächst importiert werden:
import mathEinige nützliche Funktionen aus dem math-Modul sind:
math.sqrt(x): Quadratwurzel von xmath.sin(x), math.cos(x),
math.tan(x): trigonometrische Funktionen (im Bogenmaß)math.exp(x): e hoch xmath.log(x): natürlicher LogarithmusAußerdem bietet math.pi den Wert der Kreiszahl π:
radius = 5
umfang = 2 * math.pi * radius
fläche = math.pi * radius ** 2
print(f'Umfang: {umfang:.2f}')
print(f'Fläche: {fläche:.2f}')Ausgabe:
Umfang: 31.42
Fläche: 78.54