In dieser Veranstaltung nutzen wir die Programmiersprache Python um dem Computer seine Aufgaben mitzuteilen. Werkzeuge aus dem Jupyter-Ökosystem ermöglichen die Python-Programmierung in einer sehr komfortablen grafischen Umgebung.
3.2.1Warum Python?¶
Python ist eine moderne, kostenfreie und quelloffene (“open source”) Programmiersprache. Sie entstand in den 1990er Jahren. Die erste offizielle Version wurde 1994 veröffentlicht. Autor und BDFL (“benevolent dictator for life”) ist Guido van Rossum.

I wrote 20 short programs in Python yesterday. It was wonderful. Perl, I’m leaving you. Source: Randall Munroe, xkcd.com/353
Python-Code ist sehr gut lesbar und enthält im Gegensatz zu den meisten anderen Programmiersprachen nur wenige “kryptische” Zeichen und Zeichenketten. Viele technische Aspekte des Programmierens werden von Python erledigt ohne den Nutzer damit zu konfrontieren. Mit Python kann man Software aus allen Bereichen entwickeln; von einfachen Skripten für die tägliche Arbeit bis zu vollwertigen Desktop- oder Webanwendungen. Tausende Erweiterungen ermöglichen zügiges und effizientes Arbeiten.
Als freie Software verfügt Python über eine riesige Online-Community, die mit Rat und Tat zur Seite steht. Kaum eine Frage, die nicht schon irgendwo beantwortet wurde.
Fragen zu Programmiersprachen auf Stack Overflow. Quelle: Stack Overflow Trends (vom Autor bearbeitet)
Python ist für alle Plattformen verfügbar: Linux, macOS, Windows und viele andere. Python steht beispielsweise hinter großen kommerziellen Projekten wie dem Youtube-Player, läuft eventuell aber auch in der Steuereinheit Ihrer Waschmaschine (vgl. MicroPython).
3.2.2Jupyter¶
Das Jupyter-Ökosystem ist eine Sammlung von Werkzeugen für die Python-Programmierung mit dem Schwerpunkt auf Nutzerfreundlichkeit und leichte Bedienbarkeit für Anfänger. Jupyter erlaubt das Programmieren mit Python im Webbrowser. Ausgaben, wie beispielsweise komplexe und interaktive Visualisierungen, können direkt zwischen dem zugehörigen Quellcode platziert werden. Alles befindet sich in einem einzigen Dokument: Code, Ausgaben, erklärender Text, Bilder, Formeln,...

JupyterLab ist das am weitesten verbreitete Mitglied des Jupyter-Ökosystems. Es bringt Python in den Webbrowser.
JupyterLab steht in vielen Formen zur Verfügung (vgl. Übung 2):
als rein browser-basierte Anwendung ohne Installation (Funktionsumfang geringfügig eingeschränkt),
als lokale Installation auf dem eigenen Computer,
als Installation auf Servern der Hochschule,
auf Servern anderer Organisationen.
Welche Variante genutzt wird, ist für die Veranstaltung nebensächlich. Außerdem kann Python auch ganz ohne Jupyter genutzt werden.
3.2.3Python-Crashkurs¶
Erwähnen hier als ersten Einstieg in Python beispielhaft einige Grundfunktionen. Weitere Möglichkeiten folgen im Laufe der Veranstaltung nach Bedarf. Für das weiterführende Selbststudium sind das Kapitel Python Crash Course sowie die darauf folgenden Kapitel in Data Science and Artificial Intelligence for Undergraduates geeignet.
3.2.3.1Taschenrechner¶
# Punkt vor Strich
1 + 2 * 37# Potenzen
2 ** 8256# Wurzeln
2.5 ** 0.51.5811388300841898# Division
5 / 22.5# ganzzahlige Division
5 // 22# Rest bei ganzzahliger Division
5 % 213.2.3.2Bessere Ausgaben¶
# einfacher Text
print('irgendein Text')irgendein Text
# Text mit Kommazahl
print(f'Wurzel aus 2 ist {2.0 ** 0.5}.')Wurzel aus 2 ist 1.4142135623730951.
Mehr Infos zu solchen Ausgaben: f-String und Minisprache für Stringformatierung.
# Text mit gerundeter Kommazahl
print(f'Wurzel aus 2 ist {2.0 ** 0.5:.3f}.')Wurzel aus 2 ist 1.414.
3.2.3.3Variablen¶
zahl = 2.0
wurzel = zahl ** 0.5
print(f'Wurzel aus {zahl} ist {wurzel:.3f}.')Wurzel aus 2.0 ist 1.414.
Es gibt verschiedene Variablentypen (Ganzzahl, Kommazahl, Zeichenkette,...).
print(type(2))
print(type(2.0))
print(type('Hallo!'))<class 'int'>
<class 'float'>
<class 'str'>
Umwandlungen sind zwischen geeigneten Typen möglich.
zeichenkette1 = '123'
zeichenkette2 = '456'
print(zeichenkette1 + zeichenkette2)
zahl1 = int(zeichenkette1)
zahl2 = int(zeichenkette2)
print(f'und als Zahlen: {zahl1 + zahl2}')123456
und als Zahlen: 579
3.2.3.4Listen¶
Listen sind Folgen von Variablen, deren Name einem einheitlichen Schema folgen (Listenname plus Index).
liste = ['rot', 'gelb', 'grün', 'blau']
print(liste[0])
print(liste[1])
print(liste[2])
print(liste[3])
print(liste[-1]) # letztes Element
print(liste[1:3]) # Elemente mit Index 1 (2. Element) und 2 (3. Element)rot
gelb
grün
blau
blau
['gelb', 'grün']
3.2.3.5Bedingte Ausführung¶
a = 3
b = 2 # zwei Zahlen (Nutzereingaben oder aus Datei gelesen)
if b != 0:
print(f'{a} / {b} = {a / b}')
else:
print('Division durch Null!')3 / 2 = 1.5
Wichtig: Test auf Gleichheit mit ==. Das einfache = ist der Zuweisungsoperator und kann nicht für Vergleiche verwendet werden.
3.2.3.6Wiederholte Ausführung¶
liste = ['rot', 'gelb', 'grün', 'blau']
for farbe in liste:
print(farbe)rot
gelb
grün
blau
for i in range(0, 10, 2):
print(i)0
2
4
6
8
3.2.3.7Module und Pakete¶
Die Funktionalität von Python kann durch Module und Pakete erweitert werden. Module sind Sammlungen von zusätzlichen Funktionen. Pakete sind Sammlungen von Modulen. Praktisch besteht bei der Verwendung kein Unterschied zwischen Modulen und Paketen.
import math
math.cos(math.pi / 4)0.7071067811865476import math as m
m.cos(m.pi / 4)0.7071067811865476from math import cos, pi
cos(pi / 4)0.7071067811865476Python verfügt nur über wenige eingebaute Grundfunktionen. Man wird fast immer zusätzliche Module und Pakete benötigen, die ggf. erst installiert werden müssen.