Home | Lehre | Videos | Texte | Vorträge | Software | Person | Impressum, Datenschutzerklärung |
Stand: 2024-04-18
weitgehend formuliert von Claude 3 Opus
Python ist eine dynamisch typisierte Sprache, im Gegensatz zu C, wo Variablen explizit 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
short
, int
, long
oder
long long
. Python wählt automatisch die passende Größe für
eine Ganzzahl.
= 42
x = -1337 y
Gleitkommazahlen werden in Python mit dem Datentyp float
dargestellt. Auch hier gibt es keine Unterscheidung zwischen
float
und double
wie in C.
= 3.14
x = -2.71828 y
Python 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 ist jetzt 6
i--; // i ist wieder 5 i
In 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:
= 5
i += 1 # i ist jetzt 6
i -= 1 # i ist wieder 5 i
In 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 8
Python hingegen verwendet den Operator **
für die
Potenzierung. Beispiel:
= 2 ** 3 # result ist 8 result
Die Verwendung von **
ist oft intuitiver und führt zu
besser lesbarem Code.
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
oder
False
annehmen, ähnlich wie in C die Werte 1
oder 0
.
= True
x = False y
Python unterstützt die logischen Operatoren not
,
and
und or
, die ähnlich wie in C
funktionieren.
not
negiert eine Bedingung. Wenn die Bedingung wahr
ist, wird sie 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.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 ist
Beachte, dass Python im Gegensatz zu C die Operatoren
&&
und ||
nicht verwendet. Stattdessen
werden die Schlüsselwörter and
und or
genutzt.
Mit diesem Wissen sollten C-Programmierer schnell in der Lage sein, bedingte Anweisungen und logische Operatoren in Python zu verwenden.
Hier ist ein Beispiel für einen komplizierteren Ausdruck mit den
logischen Operatoren not
, and
und
or
in Python:
= 10
x = 20
y = 30
z
= not (x > 5) or ((y < 25) and (z == 30))
result print(result)
Erklärung:
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)
ist True
, da 10 größer als 5
ist.not (x > 5)
negiert das Ergebnis von
(x > 5)
, also ist es False
.(y < 25)
ist True
, da 20 kleiner als 25
ist.(z == 30)
ist True
, da der Wert von
z
gleich 30 ist.((y < 25) and (z == 30))
ist True
, da
beide Bedingungen erfüllt sind.not (x > 5) or ((y < 25) and (z == 30))
ergibt
True
, da mindestens eine der beiden Bedingungen wahr ist
(in diesem Fall die zweite Bedingung).Das Ergebnis True
wird schließlich auf der Konsole
ausgegeben.
Dieser Ausdruck zeigt, wie man die logischen Operatoren
not
, and
und or
in Python
kombinieren kann, um komplexere Bedingungen zu formulieren. Analog zu C
wird not
vor and
ausgeführt und
and
vor or
; wenn man eine andere Reihenfolge
will, muss man entsprechende Klammern setzen.
x and y
das
y
nicht mehr aus, wenn x
schon
False
ist, so dass das and
logischerweise nur
False
werden kann, und es wertet bei x or y
das y
nicht aus, wenn x
schon
True
ist, so dass das or
logischerweise nur
True
werden kann. Oft benutzt man die Ausdrucksweise
ist_Ressource_verfügbar() and frage_Resource_ab()
, denn die
Ressource wird dann nur abgefragt, wenn sie auch verfügbar ist.
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 nicht erzwungen
und dienen hauptsächlich zur besseren Lesbarkeit und Verständlichkeit
des Codes.
int = 42
x: float = 3.14
y: bool = True z:
Type Hints können auch verwendet werden, um anzugeben, dass eine Variable mehrere Datentypen annehmen kann:
int | float = 42
x: = 3.14 # gültig, da x auch float sein kann x
Insgesamt sind die grundlegenden Datentypen in Python ähnlich wie in C, auch wenn Python dynamisch typisiert ist und Type Hints optional sind. Mit diesem Wissen können C-Programmierer schnell in Python einsteigen und die Grundlagen der Sprache verstehen.
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, sondern können direkt als Literale verwendet werden.
Stringliterale, also Buchstabe für Buchstabe wörtlich angegebene
Zeichenketten, werden in Python in einfachen ('...'
) oder
doppelten ("..."
) Anführungszeichen eingeschlossen. Strings
können mit dem +
-Operator verkettet (konkateniert)
werden:
= 'Alice'
name = 'Hallo, ' + name + '!'
greeting print(greeting) # Ausgabe: Hallo, Alice!
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:
= ' Hallo, Welt! '
text 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:
str = 'Alice' name:
Type Hints dienen hauptsächlich der besseren Lesbarkeit und Verständlichkeit des Codes und werden von Tools zur statischen Codeanalyse verwendet. Sie haben jedoch keine Auswirkungen auf die Laufzeit des Programms.
Mit f-Strings können Ausdrücke direkt in Stringliterale eingebettet
werden, indem sie in geschweifte Klammern {}
eingeschlossen
werden:
= 'Alice'
name = 25
age print(f'Mein Name ist {name} und ich bin {age} Jahre alt.')
# Ausgabe: Mein Name ist Alice und ich bin 25 Jahre alt.
{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 zu definieren.
Eine if
-Anweisung in Python sieht folgendermaßen
aus:
if bedingung:
# Anweisungen, die ausgeführt werden, wenn die Bedingung wahr ist
anweisung1 anweisung2
Wenn 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:
= 5
a = 10
b max = a if a > b else b
Python 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:
# Anweisungen
for
-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:
# Anweisungen
Die Funktion range
wird oft in Kombination mit
for
-Schleifen verwendet, um eine Sequenz von Zahlen zu
generieren:
for i in range(start, stop, step):
# Anweisungen
start
: Die Startzahl (inklusiv, Standard: 0)stop
: Die Endzahl (exklusiv)step
: Die Schrittweite (Standard: 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 ein grundlegendes Konzept in Python, das es ermöglicht, Code zu strukturieren, wiederzuverwenden und lesbarer zu machen. Wenn du bereits Erfahrung mit C hast, wirst du feststellen, dass Funktionen in Python ähnlich funktionieren, jedoch mit einigen Unterschieden und zusätzlichen Funktionen.
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, schreibst du einfach den Funktionsnamen gefolgt von Klammern und den erforderlichen Argumenten.
'Alice') # Ausgabe: Hallo, Alice! greet(
Funktionen in Python können Werte mit dem Schlüsselwort
return
zurückgeben. Wenn keine solche explizite
Rückgabeanweisung vorhanden ist oder wenn return
ohne Wert
dahinter steht, gibt die Funktion None
zurück.
def add(a, b):
return a + b
= add(3, 5)
result print(result) # Ausgabe: 8
Sobald ein return
-Statement in einer Python-Funktion
erreicht wird, wird die Ausführung der Funktion sofort beendet, wie in
C. Alle nachfolgenden Anweisungen in der Funktion werden nicht mehr
ausgeführt.
Beispiel:
def beispiel_funktion():
print('Vor dem return')
return
print('Nach dem return') # Wird nicht ausgeführt
beispiel_funktion()
Ausgabe:
Vor dem return
Eine Python-Funktion kann wie eine C-Funktion mehrere
return
-Statements enthalten. Das erste erreichte
return
-Statement beendet die Funktion und gibt den
entsprechenden Wert zurück.
Beispiel:
def ist_positiv(zahl):
if zahl > 0:
return True
else:
return False
print('Nach den returns') # Wird nicht ausgeführt
print(ist_positiv(5)) # Ausgabe: True
print(ist_positiv(-2)) # Ausgabe: False
Im folgenden geben die Type Hints a: int
und
b: int
an, dass die Funktion multiply
zwei
ganzzahlige Parameter erwartet. Der Type Hint -> int
gibt an, dass die Funktion einen ganzzahligen Wert zurückgibt.
def multiply(a: int, b: int) -> int:
return a * b
= multiply(4, 6)
result print(result) # Ausgabe: 24
Python bietet das eingebaute math
-Modul, das eine
Vielzahl von mathematischen Funktionen bereitstellt. Um es zu verwenden,
muss es zunächst importiert werden:
import math
Einige nützliche Funktionen aus dem math
-Modul sind:
math.sqrt(x)
: Berechnet die Quadratwurzel von
x
math.sin(x)
, math.cos(x)
,
math.tan(x)
: Berechnen die trigonometrischen Funktionen
Sinus, Kosinus und Tangens von x
im Bogenmaßmath.exp(x)
: Berechnet die Exponentialfunktion von
x
math.log(x)
: Berechnet den natürlichen Logarithmus von
x
Eine wichtige Konstante im math
-Modul ist
math.pi
, die den Wert der mathematischen Konstante Pi (π)
enthält. Pi ist das Verhältnis des Umfangs eines Kreises zu seinem
Durchmesser und hat einen Wert von etwa 3,14159.
Hier ist ein Beispiel, wie man math.pi
in Python
verwenden kann:
import math
= 5
radius = 2 * math.pi * radius
umfang = math.pi * radius ** 2
flaeche
print(f'Umfang: {umfang:.2f}')
print(f'Fläche: {flaeche:.2f}')
Ausgabe:
Umfang: 31.42
Fläche: 78.54