
Dieses Buch ist für all diejenigen, die blutige Anfänger in Programmierung oder Data Science sind. Bis zum Ende des Buches werden dir all diese Punkte näher gebracht:
- Programmierung
- Verschiedene Methoden der Analyse von schriftlichen Werken
- Erstellung von hübschen und einfach verständlichen Statistiken
- 3D Grafen und Statistiken mit Animationen
Falls du ein blutiger Anfänger in Python sein solltest, dann lohnt es sich über das Kapitel Grundlagen zu gehen, sonst nutze dieses Buch gerne als Nachschlagewerk und springe zu den Kapitel, die dich interessieren.
Ziel dieses Buches ist es, das Verständnis dafür zu entwickeln, wie wir mit Python Texte analysieren, um wertvolle Erkenntnisse aus großen Textmengen zu extrahieren.
Was ist Python?
Python ist eine general-purpose language, oder Allzwecksprache auf Deutsch.
Das heißt wir können Python für so ziemlich alles verwenden. Zudem ist Python auch high level. "High level" kann man auch als "einfach" übersetzen. Programmierer kategorisieren Computersprachen in zwei Kategorieren: "high level" und "low level". "low level" bedeutet, dass etwas sehr nah an der "Maschine" ist. Sprich wenn ich "low level code" schreibe, dann könnte das bedeuten, dass ich mir mehr Gedanken machen muss, über Syscalls (Exekutionen die das Betriebssystem macht) oder ob etwas im "Stack" oder "Heap" vom RAM (Random Access Memory) gespeicher wird. Wenn du gerade nichts verstanden hast, dann ist das vollkommen ok, weil wir Python Code schreiben werden und weil Python "high level" ist, müssen wir nichts von diesen Sachen beachten und können, ohne komplette Computernerds zu sein, Code schreiben!
In anderen Worten: Low level = schwierig und High level = einfach.

Im Laufe des Buches werden wir uns auf Textanalyse, ein kleiner Teil von Datascience, konzentrieren, aber wir können mit Python auch Mobileapps, Videospiele, usw., so ziemlich alles, sogar Webseiten programmieren. Alle Skills, die du in diesem Buch lernen wirst, kannst du somit auch auf andere Bereiche anwenden und somit dein Horizont "ganz einfach" erweiteren und vielleicht sogar eine Karriere aufbauen.
Weil es nicht schaden kann, hier noch ein paar Fakten zu Python von Wikipedia:
- Python wurde 1980 von Guido van Rossum erfunden.
- Python ist Open Source, sprich komplett kostenlos
- Python ist die beliebteste Sprache für Datascience und Machine Learning
Ein großer Vorteil von Python ist, dass der Code sehr an der normalen englischen Sprache erinnert und somit einfach verständlich ist, auch für diejenigen, die noch nie programmiert haben.
# Eine Liste von Zahlen erstellen
numbers = [1, 2, 3, 4, 5]
# Gesamtwert initialisieren
sum = 0
# Schleife durch jede Zahl in der Liste
for number in numbers:
# Hinzufügen der Zahl zur Summe
sum += number
# Ausgabe der Gesamtsumme
print("Die Summe der Zahlen ist:", sum)
In diesem Codebeispiel rechnen wir das Ergebnis aller Zahlen zusammen
und geben das Ergebnis in einer Konsole aus.
Hier ist der Output des Codes:
Die Summe der Zahlen ist: 15
Vielleicht verstehst du nicht alles sofort von diesem Codebeispiel. Darum geht es auch gar nicht. Das werden wir in den nächsten Kapiteln noch lernen. Mit dem Codebeispiel wollte ich dir nur mal zeigen wie leicht verständlich Pythoncode auch für totale Programmieranfänger sein kann.
Übersicht
Python installieren
Vscode installieren
Grundlagen
Plots generieren
Textanalyse
Installiere Python
Um in Python programmieren zu können, sollte Python auch auf deinem System installiert sein. Glücklicherweise kann man Python so ziemlich auf alles installieren, vorallem auf Windows, macOS oder Linux.
Hier habe ich jeweils Anleitungen für die drei größten Betriebsysteme unserer moderenen Welt:
Windows
Der Windows-Installations Guide basiert auf diesen Digital Ocean Artikel.
Downloade den latest Python Installierer für Windows von python.org
und führe die .exe
Datei aus.
Du solltest dieses Fenster hier sehen:

Bevor du auf "Install Now" klickst, gehe sicher, dass "Add python.exe to PATH" angekreuzt ist, damit können wir nach der Installation Python in der "cmd"-Konsole ausführen.

Beim nächsten Schritt "Optional Features" kannst du ruhig alles ankreuzen, bevor du auf "Next" klickst. Aber geh bitte sicher, dass auf jedenfall "pip" und "py launcher" angekreuzt ist!

Kreuze alle "Advanced Options" wie im Screenshot an, aber auch hier kannst du ruhig alles ankreuzen. Es wir keinen großen Unterschied machen. Lieber zu viel installieren als zu wenig. Keine Sorge der Python Installierer installiert dir nur Programme, die wichtig für Python sind und keine Adware oder Malware wird installiert!

Wenn du "Setup was successfull" siehst, dann hat alles richtig funktioniert
und du kannst die "cmd" Konsole öffnen und python --version
eingeben.
Wenn du Python <irgendeine version>
sehen kannst, dann hast auch wirklich alles geklappt
und du kannst im nächsten Kapitel dich darum kümmern einen Texteditor zu installieren.
macOS
Auf macOS sollte Python schon vorinstalliert sein, also musste hier nichts machen. Um zu schauen, ob es auch wirklich auf deinem Mac installiert ist, gebe diesen Befehl ein:
python3 --version

Um Python Skripte, die wir hier schreiben, auf einen Mac auszuführen,
musst du immer python3
anstelle python
eingeben!
homebrew
Aber falls du eine neuerer Version von Python brauchst, dann kannst du diese ganze einfach mit dem "homebrew" Package Manager installieren. Dafür müssen wir erstmal homebrew installieren.
Öffne den Terminal
und tippe in die Konsole:
xcode-select --install

Dies installiert alle "basic tools", die du brauchst fürs Programmieren.
Danach gehe auf die brew.sh Website und kopiere den Befehl unter Install Homebrew
.
Der müsste ungefähr so aussehen:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

Achtung! Dieser Befehl downloadet ein Installations-skript und führt es auf deinem Computer aus, um homebrew
auf deinen Mac zu installieren. Obwohl es relativ sicher ist,
ist dies theoretisch sehr gefährlich einfach so Skripts zu downloaden und auszuführen.
Also gehe sicher, dass du diesen Befehl von der originalen brew.sh Website kopierst!
Wenn homebrew erfolgreich installiert wurde, siehst du im Terminal die nächsten Schritte, die du machen musst, damit du auch homebrew benutzen kannst. In meinem Fall es drei Befehle:
echo >> /Users/marc/.zprofile
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> /Users/marc/.zprofile
eval "$(/opt/homebrew/bin/brew shellenv)

Achtung! Mein User hier heißt marc
und deswegen sind deine drei Befehle wahrscheinlich ein bisschen anders!
Jetzt kannst du im Terminal brew doctor
eingeben, um sicher zu gehen, dass alles richtig installiert wurde.

Nun kannst du mit nur einem Befehl Python installieren.
brew install python

Um sicher zu gehen ob Python auch funktioniert gebe python3 --version
ein,
um die installierte Version von Python ausgespuckt zu bekommen.

Ubuntu
Auf Ubuntu und wahrscheinlich jedem anderen Linux basierten Betriebsystem sollte Python vorinstalliert sein, wenn nicht dann kannst du es auf Ubuntu oder Debian mit diesem Befehl hier installieren:
sudo apt install python
Fertig! Zum Testen gebe python --version
ein, um zu schauen ob es auch richtig installiert wurde.
Einführung in python
python
Schreibe Code in REPL
exit()
unter macOs und Windows einfach, aber windows?
erstelle main.py mit print("Hello World")
$ python main.py
Installation
Installiere Vscode, indem du auf dieser Webseite den richtigen Installer für dein Betriebssystem downloadest und die Installations Datei ausführst.
Windows
macOS
Ubuntu
Windows
macOS
Ubuntu
Einführung in
Öffne VsCode
erstelle einen Projektordner
erstelle main.py
print("Hello World")
führe die main.py aus
So jetzt müsste alles richtig eingerichtet sein
und wir können uns darauf konzentrieren Python und die Basics der Programmierung zu lernen.
Also Let's go!
Jetzt können wir anfangen coden zu lernen! Im nächsten Kapitel lernen wir dazu die ganzen Basics, die man kennen sollte, bevor wir mit den ersten realen, praktischen Anwendungsbeispiel anfangen: der programmatischen Textanalyse. Aber zu aller erst schauen wir uns den ersten Baustein unseres Programmierfundamentes an.
Variablen
Variablen, den Begriff kennen wir schon von der Mathematik.
Es bedeutet, dass ein Wert variabel ist, also sich verändern kann.
Zum Beispiel die Variable x
in y = x + 2
ist ein Platzhalter für beliebig vielen Werten.
Auch so in der Programmierung sind Variablen als eine Art "Platzhalter" oder viel mehr "Zwischenspeicher" für einen Wert, zu verstehen.
Aber durch Theorie allein kann man nur schwer lernen oder etwas verstehen, also lass uns eine Variable erstellen, die mein jetziges Alter "zwischenspeichert".
my_age = 25
Ich habe hier eine Variable mit den Namen my_age
erstellt
(in Programmierfachchinesisch nennt man das auch "deklarieren").
my_age
bekommt den Wert 25
zugewiesen.
Um in Python eine Variable zu deklarieren, dürfen wir das =
nicht vergessen,
dadurch weiß Python überhaupt erst, dass my_age
eine Variable ist.
Ohne das =
könnte Python unser Code nicht verstehen und wir würden einen Error bekommen.
Wenn ich jetzt mein Alter wissen möchte
(weil ich es wieder einmal vergessen habe, was mir oft passiert...),
dann kann ich darauf zugreifen, indem
ich in einer späteren Zeile im Skript einfach nur my_age
schreibe.
Mit dem print
Befehl können wir die my_age
Variable in der Konsole ausgeben.
Machen wir das einmal:
my_age = 25
print(my_age)
Wenn wir unser Skript ausfüheren, dann sehen wir folgendes in der Konsole:
25
Überall wo wir jetzt my_age
brauchen, können wir,
anstelle immer wieder 25
zu schreiben, my_age
schreiben.
Der Vorteil ist, wenn wir unser Code für einen anderen User anpassen möchten,
dann müssen wir nur die Zeile, in der wir my_age
deklariert haben, anpassen.
Datentypen
Neben Zahlen können wir auch Variablen für Text, Listen und viele, viele anderen Dinge erstellen.
In diesen Kapitel gehen wir Schritt für Schritt über die wichtigsten Datentypen von Python und wie man mit diesen arbeiten kann.
Hier schonmal eine kleine Übersicht von all den Datentypen, die ich dir näher bringen werde:
Datentyp | Ein-Wort-Erklärung |
---|---|
Number | Zahl |
Boolean | Wahr oder Falsch |
String | Text |
List | Liste an Werten |
Dictionary | Key und Value Liste |
Den Typ einer Variable können wir mit dem type
Befehl heraus bekommen.
Zum Beispiel hier einmal der Datentyp von der Variabel my_age
, die wir im letzten Kapitel erstellt haben.
print(type(my_age))
<class 'int'>
Mit dem print
Befehl um type(my_age)
gehe ich auch sicher, dass der Typ in der Konsole ausgespuckt wird.
Number
Einer der wohl wichtigsten und offensichtlichsten Datentypen einer Programmiersprache ist die Nummer oder auch Zahl.
In Python, sowie auch in vielen verschiedenen Programmiersprachen, gibt es zwei verschiedene Arten von Zahlen.
- Integer sind Ganzzahlen, z.B. 420 oder -69 und so weiter...
- Float sind Gleitkommazahlen, z.B. 24.7 oder -4.2069
Beachte: Python benutzt .
für die Gleitkommazahlen, wie in der englischen Sprache.
Egal ob integer
oder float
mit beiden Zahlentypen können wir ganz normal rechnen:
Plus +
x = 5
y = 3.5
z = x + y
print(z)
8.5
Minus -
x = 5
y = 3.5
z = x - y
print(z)
1.5
Mal *
x = 5
y = 3.5
z = x * y
print(z)
17.5
Geteilt /
x = 5
y = 3.5
z = x / y
print(z)
1.4285714285714286
Hoch **
x = 5
y = 3.5
z = x ** y
print(z)
279.5084971874737
Modulus %
Der Modulus %
wird verwendet, um den Rest einer Division zu berechnen.
Kannst du dich vielleicht noch erinnern,
wie du in der Grundschule geteilt rechnen gelernt hast und
am Ende der Rechnung den Rest angegeben hast,
z.b. 5 / 2 = 2 Rest 1
.
Der Modulus funktioniert genau so, aber dass wir nur den Rest bekommen!
Also 5 % 2
gibt uns die Zahl 1
oder 11 % 3
ergibt 2
.
Zum Beispiel können wir den Modulus verwenden,
um zu erkennen ob eine Zahl gerade oder ungerade ist,
denn wenn x % 2
null ergibt, dann ist die Zahl durch zwei teilbar
und wenn es eins ergibt, dann eben offensichtlicher Weise nicht.
print(5 % 2)
print(8 % 2)
1
0
Noch mehr Mathe mit dem math Modul
Falls man aber noch mehr Mathe machen möchte als nur Plus, Minus oder Geteilt, dann lohnt sich ein Blick in das "Math" Modul.
Zu aller erst müssen wir "math" importieren.
Schreibe dafür dies hier ganz oben als erste Zeile in der .py
Skript Datei.
import math
math.ceil()
Mit math.ceil()
können wir eine Zahl, die wir innerhalb der ()
Klammern packen, aufrunden.
x = math.ceil(9.3)
print(x)
10
math.floor()
Oder mit math.floor()
können wir eine Zahl abrunden:
x = math.floor(9.3)
print(x)
9
math.trunc()
math.trunc()
schneidet alles nach der Kommastelle weg, damit wir eine Ganzzahl bekommen.
x = math.trunc(9.3)
print(x)
9
math.exp()
math.exp()
gibt uns das Ergebnis von "e hoch x":
x = math.exp(9)
print(x)
8103.083927575384
math.sqrt()
Ziehe die Wurzel von einer Zahl:
x = math.sqrt(9)
print(x)
3.0
math.cos()
Berechne den Kosinus von einer Zahl:
x = math.cos(0)
print(x)
1.0
Noch mehr Information zum "Math" Modul findest du hier.
Übungsaufgaben
Hier ein paar Übungsaufgaben, die du nun lösen kannst, um deine Programmierskills auf die Probe zustellen!
-
Berechne die gesamte Anzahl an Tagen anhand des Alters einer Person.
-
Berechne wie viele Sekunden X Stunden hat, wo X eine beliebige Zahl ist.
-
Ermittle anhand des Geburtsjahres wie alt eine Person ist
-
Ermittle den Rest einer Division von zwei Zahlen
-
Berechne den Flächeninhalt eines Dreiecks (a: 5cm, b: 5cm, c: 10cm)
Boolean
Den nächsten Datentyp, den wir lernen werden, ist der Boolean.
Ein Boolean kann nur zwei mögliche Werte haben kann:
"wahr" also True
oder "falsch" also False
.
Stelle dir einen Boolean wie einen Lichtschalter vor,
der entweder ein- oder ausgeschaltet sein kann.
In diesem Fall ist "eingeschaltet" True
und "ausgeschaltet" False
.
In der Programmierung sind Booleans nützlich, um Entscheidungen zu treffen oder den Ablauf eines Programms zu steuern. Zum Beispiel kann man Booleans verwendet, um zu bestimmen, ob ein Kunde erlaubt ist von einem Onlineshop Alkohol zu kaufen oder ob der User sein Programm in Light oder Dark Theme eingestellt hat.
is_light_theme = True
user_can_buy_alcohol = False
Die bool Funktion
Mit der bool
können wir so ziemlich fast alles und auch Variablen zu einem boolean umkonvertieren.
x = 42
x_as_bool = bool(x)
print(x_as_bool)
True
Warum 42 zu True wird, werden wir im nächsten Kapitel lernen!
Logische Operatoren
Logische Operatoren sind spezielle Symbole, die in der Programmierung verwendet werden, um logische Vergleiche zwischen zwei oder mehreren Ausdrücke zu machen.
In anderen, einfacheren Worten: ein Logischer Operator ist wie eine Behauptung, die entweder wahr oder falsch sein kann.
Wenn ich behaupte, dass die Corona Impfung ein Versuch von Bill Gates sei,
die Menschheit zu unterjochen, dann ist die Aussage entweder True
oder False
. :P
Hier eine Tabelle von allen Logischen Operatoren, die es in Python gibt. Einige sollten dir vom Mathe Unterricht bekannt sein:
Operator | Bedeutung |
---|---|
and | und |
or | oder |
== oder is | gleich |
!= oder is not | nicht gleich |
not | nicht |
< | kleiner als |
> | größer als |
<= | kleiner gleich |
>= | größer gleich |
Aber keine Sorge, ich gehe über jeden Operator und gebe dir ein Beispiel, wie man es benutzt.
and
print(True and False)
False
Der "und"-Operator überprüft ob die beiden Werte, links und rechts, True
sind.
Zum Beispiel wir wollen überprüfen ob ein Kunde, der Alkohol kaufen möchte, über 18 ist und einen Ausweis mit sich trägt. Nur wenn beides der Fall ist, können wir ihm guten Gewissens Alkohol verkaufen:
is_adult = True
has_passport = False
print(is_adult and has_passport)
False
Aber erst wenn ein Kunde unseren Onlineshop besucht und beides erfüllt, können wir endlich Profit mit unserem Alk machen.
is_adult = True
has_passport = True
print(is_adult and has_passport)
True
or
print(True or False)
True
Der "oder"-Operator überprüft ob links oder rechts True
ist.
Nur eine der beiden Seiten muss True
sein, damit die Aussage als True
gilt.
Zum Beispiel in einer Dating App möchte ich mit Personen gematched werden, die entweder Hunde oder Katzen mögen.
likes_cats = True
likes_dogs = False
print(likes_cats or likes_dogs)
True
== is
print(True == False)
print(True is False)
False
False
Der "gleich"-Operator überprüft ob die linke Seite identisch mit der rechten Seite ist.
Wir können auch Zahlen und alle anderen Datentypen, die wir noch lernen werden, damit vergleichen.
Dabei ist es egal ob wir ==
oder is
schreiben. Benutze das was dir besser gefällt.
my_age = 25
your_age = 28
print(my_age == your_age)
your_age = 25 ## Überschreibe your_age mit 25
print(my_age == your_age)
False
True
!= is not
print(True != False)
print(True is not False)
True
True
Das selbe wie beim "gleich" können wir auch hier machen, aber umgedreht mit dem "nicht-gleich"-Operator.
Dieser checkt ob die linke Seite nicht gleich mit der rechten Seite ist.
Dabei ist es auch hier egal ob wir !=
oder is not
schreiben. Benutze das was dir besser gefällt.
my_age = 25
your_age = 28
print(my_age != your_age)
your_age = 25 ## Überschreibe your_age mit 25
print(my_age != your_age)
True
False
not
print(not True)
False
Der "nicht"-Operator tut einen "boolischen" Wert (True
oder False
) umdrehen.
So wie wir es oben im Beispiel sehen können, wo True
mit not
zu False
umkonvertiert wird.
Schauen wir uns weitere Beispiel des "nicht"-Operator an!
not True ## -> False
not False ## -> True
not 42 ## -> False
not 0 ## -> True
not -42 ## -> False
Du fragst dich jetzt bestimmt warum not 0
True
ist und warum not 42
sowie not -42
False
ist.
In vielen Programmiersprachen wird die Zahl 0 als False
behandelt,
während alle anderen Zahlen (sowohl positive als auch negative) als True
behandelt werden.
Nun, da alle anderen Zahlen (außer 0) als True
gelten, sind sowohl 42 als auch -42 wahr.
Wenn wir den "nicht"-Operator auf 42 und -42 anwenden, kehren wir ihre Werte um,
daher werden sowohl not 42
als auch not -42
zu False
.
Wir können auch sebstverständlich den "nicht"-Operator an Variablen verwenden.
is_r_cool = False
print(not is_r_cool)
True
<
print(42 < 24)
False
Das "kleiner als"-Symbol wird verwendet, um zwei Zahlen miteinander zu vergleichen.
Wenn die Zahl auf der linken Seite des Symbols kleiner ist als die Zahl auf der rechten Seite,
dann ist die Aussage True
oder andernfalls False
.
>
print(42 > 24)
True
Das selbe auch beim "größer als"-Symbol.
<=
print(42 <= 24)
False
Das "kleiner gleich"-Symbol tut nicht nur True
geben, wenn die linke Seite kleiner ist als die rechte,
sondern auch wenn die linke Seite gleich der rechten Seite ist.
print(42 <= 43)
print(42 <= 42)
print(42 <= 41)
True
True
False
>=
print(42 >= 24)
True
Das selbe auch beim "größer gleich"-Symbol.
print(42 >= 43)
print(42 >= 42)
print(42 >= 41)
False
True
True
Im nächsten Kapitel werden wir all diese Operatoren verwenden,
um mit Hilfe von if
und else
in unserem Programm Entscheidungen treffen
zu können.
Der Unterschied zwischen is
und ==
Der ==
Operator gibt True
zurück, wenn beide Werte, die wir vergleichen wollen, gleich sind,
während is
kontrolliert ob beide Werte die selbe Memoryadresse haben.
Ok... Ich muss mehr ausholen. Jede Variable, die wir erstellen, und jeder Wert, den wir ihr zuweisen, werden im RAM vom Computer gespeichert. Zum Beispiel dieser Pythoncode hier:
my_age = 27
Der Wert von my_age
wird im RAM gespeichert, damit unser Programm sich es auch merken kann
und wir in späteren Zeilen darauf zugreifen können, um damit zu rechnen oder es in der Konsole auszugeben:
print(my_age)
Der ganze Prozess, im RAM abspeichern, den Ort, wo es abgespeichert wurde, und dies mit my_age
zu verlinken,
passiert komplett automagisch im Hintergrund umnd wir müssen uns keine Gedanken drüber machen.
Der Ort, die Adresse, wo die Variable im RAM gespeichert wird, nennt man in Programmierfachchinesisch auch "Pointer".
Der Pointer zeigt auf die Stelle im RAM, in der die Variable existiert.
Hier nochmal visualisiert:
a = 1000
b = "Hello"
c = 1000
d = a + c
Dieser Pythoncode sieht dann ganz abstrakt im RAM so aus:

Wie du sehen kannst, haben a
und c
, obwohl die den selben Wert haben, unterschiedliche Pointer.
Das können wir auch sehen wenn wir is
benutzen:
print(a == c)
print(a is c)
True
False
Das selbe, aber nur umgedreht, gilt natürlich auch für is not
und !=
.
print(a != c)
print(a is not c)
False
True
if und else
Mit if
und else
können wir innerhalb unseres Programmes Entscheidungen treffen,
um eine Aktion auszuführen, wenn eine bestimmte Bedingung erfüllt ist
und eine andere Aktion, wenn die Bedingung nicht erfüllt sein sollte.
number = 5
if number % 2 == 0:
print("number is even")
else:
print("number is odd")
Nach dem if
-Schlüsselwort folgt ein Aussage, die sich entweder zu True
oder False
auflöst.
In der nächsten Zeile ist, der Code, der ausgeführt werden soll, wenn die Aussage True
ist,
indentiert mit einem Tab.
Wenn aber die Aussage False
ist, wird der else
Block ausgeführt.
Also nochmal einfacher erklärt mit einem Pseudocode-Beispiel:
if this_is_true:
do_this()
else:
do_that()
Im Beispiel von ganz oben wird "number is even" in der Console ausgegeben, wenn der Rest von number
geteilt durch zwei null ist, also die Zahl gerade ist und wenn dies nicht der Fall ist,
dann wird "number is odd" ausgegeben.
Wir können auch mehrere if
's hintereinander reihen um mehrere Bedingungen Schritt für Schritt zu überprüfen.
if this_is_true:
do_x()
elif or_this_is_true:
do_y()
else:
do_z()
elif
steht hierbei für else if
, oder auch "oder wenn" auf Deutsch.
Lass uns ein Beispiel schreiben, bei dem in der Console eine Nachricht geschrieben wird, wenn die Zahl positiv, negativ oder null ist.
number = -7
if number < 0:
print("Number is negative.")
elif number > 0:
print("Number is positive.")
else:
print("Number is null.")
Als erstes checken wir ob die Zahl kleiner als null ist, dann printen wir "Number is negative" und
wenn die Zahl größer als null ist, dann printen wir "Number is positive".
Wenn beides nicht der Fall ist, also beide Aussagen False
sind dann wird der else
Block ausgeführt und
logisch können wir ab diesen Punkt ab an davon ausgehen, dass die Zahl 0
sein muss!
Wir sind aber nicht verpflichtet ein else
zu verwenden am Ende einer if
-Kette.
do_x()
if this_is_true:
do_y()
do_z()
So können wir zum Beispiel erst x
machen und wenn die if
-Aussage True
ist,
dann machen wir auch y
, aber wenn es False
ist, naja, dann machen wir halt y
nicht
und ungeachtet der if
Aussage, machen wir z
als nächstes.
Übungsaufgaben
-
Hier ein paar Übungsaufgaben mit
if
undelse
: -
Teile eine Zahl durch eine andere und prüfe, ob das Ergebnis eine ganze Zahl ist.
-
Überprüfe, ob eine Zahl positiv, negativ oder null ist und gib eine entsprechende Meldung aus.
-
Überprüfe, ob eine Zahl gerade oder ungerade ist
-
Vergleiche zwei Zahlen und gib an, welche größer ist.
-
Überprüfe, ob eine Zahl in einem bestimmten Bereich liegt (z.B. zwischen 10 und 20).
-
Schreibe eine Bedingung, die prüft, ob eine Zahl durch eine andere teilbar ist.
-
Schreibe eine Bedingung, die überprüft, ob eine Zahl ein Vielfaches von 10 ist.
-
Schreibe ein Programm, welches aus einer Punktzahl (0-100) eine Note (1-6) zuweist
-
Erkenne aus 3 Zahlen welche davon die größte ist und welche davon die kleinste ist
-
Empfehle aufgrund des Alters einer Person einen Film
match
Normal
match x:
case 10:
# ...
case 20:
# ...
case _:
# ...
String
match greeting:
case "hi":
# ...
case "hello":
# ...
case _:
# ...
Grouping
match x:
case 10 | 20 | 30:
# ...
case _:
# ...
Mit if statement
match x:
case x if x % 2 == 0:
# ...
case _:
# ...
Mit Listen
match my_list:
case [a, b, c]:
# ...
case [a, b, c, d]:
# ...
case _:
# ...
Mit Listen
match my_dict:
case { "name": name, "age": age }:
# ...
case _:
# ...
TODO test was wenn kein default, dann error so wie in Rust?
String
Ein String, auf Deutsch Zeichenkette, ist einfach nur Text...
Damit Python Text auch als string
erkennen kann,
müssen wir den Text mit "
oder '
einkapseln.
Beispieltext mit "
:
name = "Marc"
oder mit '
:
name = 'Marc'
aber, wenn wir die "
oder '
vergessen, dann bekommen einen Error:
name = Marc
Traceback (most recent call last):
File "/home/marc/Documents/Projects/python_word2vec/main.py", line 2, in <module>
name = Marc
^^^^
NameError: name 'Marc' is not defined
make: *** [Makefile:8: start] Error 1
Python denkt, dass Marc
eine Variable ist, aber natürlich gibt es Marc
als Variable
nicht, weswegen wir den Error 'Marc' is not defined
bekommen.
Ein string
kann auch ein Satz sein, ergo Leerzeichen innerhalb der "
oder '
sind erlaubt!
name <- "Marc Mäurer"
Wie dir vielleicht aufgefallen ist, haben wir die "
Syntax auch schon beim print
Befehl benutzt.
Wir können auch "multi-line strings" mit drei """
erstellen:
lorem_ipsum = """Soluta aut quo tempore quisquam corrupti cum velit deserunt.
Sint ea fugiat eaque aut.
Autem ea suscipit voluptas omnis est.
Et sit id sit aperiam aut ut.
Fuga rerum qui consequatur reiciendis.
"""
in
Mit den in
Operator kann man schauen ob ein "Substring" in einem "String" ist,
zum Beispiel ob "Hello" in "Hello World" ist.
Sprich "Hello" in "Hello World"
ist True
und "Justice" in "Hello World"
wäre dementsprechend False
.
x = "Hello World"
is_world_in_x = "World" in x
print(is_world_in_x)
True
List
Stell dir eine Liste wie eine stink-normale Einkaufsliste vor. In dieser Liste können viele verschiedene Sachen drinne stehen, wie z.B. "Ketchup" "Tomaten" "Paprika" etc...
Um eine Liste in Python zu erstellen benutzen wir den []
Klammern und
innerhalb der []
Klammer kommen mit einem Komma getrennt alle Werte rein.
einkaufsliste = ["Ketchup", "Tomaten", "Paprika", "Banane"]
print(einkaufsliste)
["Ketchup", "Tomaten", "Paprika", "Banane"]
In einer Liste kann alles rein, Zahlen, Strings, Booleans, komplett egal was. Hier zum ein Beispiel eine Liste an Zahlen:
numbers = [23, 63, 39, 35, 84, 58]
print(numbers)
[23, 63, 39, 35, 84, 58]
Oder hier eine "gemischte" Liste von verschiedenen Datentypen:
numbers = ["Python", True, 42, False, -10]
print(numbers)
["Python", True, 42, False, -10]
Mit der len
Funktion können wir herausfinden wie lang eine Liste ist.
Hier zum Beispiel die Länge unserer einkaufsliste
len(einkaufsliste)
4
Indexing
Wenn wir jetzt wissen wollten was an einer bestimmten Stelle in unserer Einkaufsliste steht,
dann brauchen wir die []
Klammern.
Innerhalb der []
Klammern kommt dann die Zahl für welchen Index wir den Wert haben wollen.
Dabei fangen wir bei 0
and zu zählen, sprich 0
ist der erste Wert, 1
ist der zweite und so weiter.
print(einkaufsliste[0])
print(einkaufsliste[1])
print(einkaufsliste[2])
print(einkaufsliste[3])
Ketchup
Tomaten
Paprika
Banane
Mit einer Minuszahl können wir rückwärts der Liste entlang gehen:
print(einkaufsliste[-1])
print(einkaufsliste[-2])
print(einkaufsliste[-3])
print(einkaufsliste[-4])
Banane
Paprika
Tomaten
Ketchup
Coole Funktionen mit Listen
Listen geben uns viele coole, hilfreiche Funktionen zur Verfügung. Als aller erstes lass uns eine neue Liste erstellen:
my_list = [1, 2, 3, 4]
.append(5) ### Füge Value am Ende einer Liste hinzu
.pop(1) ### Entferne letztes Item wenn leer oder Item am Index
.remove("yeah") ### Entferne erstes Vorkommnis eines Values
.clear() ### entferne alles
.copy() ### Clone Liste
.count(value) ### zähle wie oft value vorkommt
.extend(list) ### erweitere Liste mit einer weiteren Liste
.index(value) ### Bekomme Index vom Value
.reverse() ### Clone? und kehre Liste um
.sort() ### Clone? und sortiere Liste
.insert(index, value) ### Schiebe Value in einer Liste an einem Index. Values am Index werden nach links verschoben.
Strings sind Listen von Characters
Strings in Python sind nichts als Listen aus Buchstaben. Sprich man kann auf jeden einzelnen Buchstaben eines Strings mit dem entsprechenden Index zugreifen.
my_str = "Hello World"
print(my_str[0])
print(my_str[1])
print(my_str[2])
print(my_str[3])
print(my_str[4])
H
e
l
l
o
Oder man kann auch die Länge eines Strings, wie als wäre es eine stink-normale Liste,
mit der len
Funktion ermitteln.
print(len(my_str))
11
Tuple
Tuples sind wie Listen, die man nicht verändern kann (in Programmierfachchinesisch nennt man das auch "immutable").
Lass uns verschiedene Tuples erstellen:
a = (1, 20, 3)
b = ("marc", "leon", "david")
c = (420, True, -5, "hallo", False)
All diese Tuples sind immutable. Wir können nichts mehr hinzufügen, entfernen oder bearbeiten. Aber sonst ist ein Tuple wie eine Liste, also können wir auf die einzelne Indexe wie gewohnt zugreifen:
a = (1, 20, 3)
print(a[1])
20
Nun wenn wir den Tuple ändern wollen, dann ist das einzige, was wir machen können, ein komplett neuen Tupel zu erstellen, um damit den alten Tupel zu überschreiben. Zum Beispiel so:
a = (1, 20, 3)
a = (1, 2, 3, 4)
print(a)
print(len(a))
(1, 2, 3, 4)
4
Oder wir können ein Tupel mit der list
Funktion zu einer Liste konvertieren,
dieser Liste einen weiteren Wert hinzufügen,
diese wieder mit der tuple
Funktion zu einem Tupel konvertieren,
um dann damit den alten Tupelwert zu überschreiben.
a = (1, 2, 3)
a_list = list(a)
a_list.append(4)
a_list[1] = 20
a = tuple(a_list)
print(a)
print(len(a))
(1, 20, 3, 4)
4
Dictionary
Dictionaries sind ziemlich cool. Du kannst es dir sprichwörtlich wie ein Wörterbuch vorstellen. In einem Wörterbuch gibt es zu jedem Wort einen Eintrag und jedes Wort sollte es in einem guten Wörterbuch auch nur einmal geben. Naja in Python wäre ein Wort das "field" und die Definition zu dem Wort das "value". So wie es in einem Wörterbuch mehrer verschiedene Wörter gibt, so kann man in einem Dictionary mehrere verschiedene "fields" haben. Zum Beispiel lass uns mal einen "Dict" erstellen:
ages = {
"marc": 27,
"leon": 25,
"david": 29,
}
print(ages)
print(type(ages))
print(len(ages))
{'marc': 27, 'leon': 25, 'david': 29}
<class 'dict'>
3
TODO Indexing und Mutability
my_dict["field"]
len(dict)
Schleifen
In so ziemlich jeder Programmiersprache gibt es Schleifen oder auch "Loops" auf Englisch genannt.
Schleifen ermöglichen es dir, bestimmte Aktionen mehrmals wiederholen zu lassen (in Programmierfachchinesisch wird ein solche Wiederholung einer Schleife auch "Iteration" genannt). Dies ist besonders nützlich, wenn du Code hast, der viele Male hintereinander durchgeführt werden soll und du nicht unbedingt 100-mal hintereinander den selben Code copy-pasten willst.
In Python gibt es zwei verschiedene Arten von Schleifen, die für verschiedene Usecases verwendet werden:
for
Die for
Schleife gibt es so ziemlich in jeder Programmiersprache.
Kurzgesagt funktioniert sie so: Für die Variable x
in einer Sequenz führe Code aus.
In Python-Code sieht es ungefähr so aus:
for x in sequence:
## ...code
Um die for
Schleife besser verstehen zu können,
müssen wir uns ein Beispiel anschauen:
for x in range(1, 10):
print(x)
1
2
3
4
5
6
7
8
9
range(1, 10)
erstellt uns eine Liste [1, 2, 3, 4, 5, 6, 7, 8, 9]
.
Japp, bis 9 und nicht bis 10!!
Warum?? Keine Ahnung, es ist einfach so ¯\_(ツ)_/¯
x
ist die Variable, die jeden Wert innerhalb dieser Liste animmt.
In diesem Beispiel ist x
beim ersten mal durchlaufen der Schleife 1
und dann beim zweiten Mal 2
und so weiter bis 9
.
x
nimmt dabei pro Durchlauf jeden einzelnen Wert der Sequenz von 1 bis 9 an.
Wir sind nicht gezwungen unsere Schleifen-Variable x
zu nennen.
Wir können unsere Schleifenvariable so benennen,
wie es gerade am besten zu unserem Code passt.
Für jeden Durchlauf wird der indentierte Code darunter ausgeführt,
deswegen sehen wir in der Konsole 1 bis 9 je in einer Zeile.
Der Code darunter kann so lang sein, wie wir wollen, solange er die gleichte Indentierung hat.
Lass uns zum Beispiel eine for
Schleife schreiben,
die von 1-12, für die Monate in einem Jahr, geht und
in die Konsole schreibt, ob es ein Sommer oder Winter Monat ist:
for month in range(1, 13):
if month >= 6:
print("Summer, month", month)
else:
print("Winter, month", month)
Winter, month 1
Winter, month 2
Winter, month 3
Winter, month 4
Winter, month 5
Summer, month 6
Summer, month 7
Summer, month 8
Summer, month 9
Summer, month 10
Summer, month 11
Summer, month 12
continue und break
Innerhalb einer Schleife können wir auch continue
und break
benutzen.
continue
tut jeden weiteren Code, der kommen würde, überspringen und
geht direkt in die nächste Schleifeniteration.
## Schleife von 1 bis 10
for x in range(1, 11):
## Wenn es durch 3 teilbar ist, dann überspringe
if i % 3 == 0:
continue
## Sonst printe die Zahl in der Konsole
print(i)
1
2
4
5
7
8
10
break
bricht eine Schleife sofort ab und es wird keine weiter Iteration und kein
weiterer Code der Schleife ausgeführt.
## Schleife von 1 bis 10
for i in range(1, 11):
## Wenn i gleich 5 ist, dann breche die Schleife ab
if i == 5:
break
## Sonst printe die Zahl in der Konsole
print(i)
}
1
2
3
4
for ... else
else als finally
for x in ...:
.....
else:
print("done")
...
done
fizzbuzz
"fizzbuzz" wohl die bekannteste Programmieraufgabe auf der Welt. Jeder der Programmieren lernt oder studiert, wird früher oder später diese Aufgabe mal gestellt bekommen, denn fizzbuzz das perfekte Problem für Programmieranfänger, die Schleifen lernen. Dann lass uns mal anfangen!
Gehe von 1 bis 100
- Wenn eine Zahl durch 3 teilbar ist, dann gebe "fizz" in die Konsole aus
- Wenn eine Zahl durch 5 teilbar ist, dann gebe "buzz" in die Konsole aus
- Sonst gebe die Zahl so wie sie ist in die Konsole aus
Zum Beispiel:
1 2 fizz 4 buzz fizz 7 8 ...
TODO: Lösung kommt hier hin und wird collapsable gemacht mit html/css on print collapsed
Jetzt bearbeite dein Code und gebe "fizzbuzz" in die Konsole aus, wenn die Zahl durch 3 und 5 teilbar ist.
Zum Beispiel:
1 2 fizz 4 buzz fizz 7 8 fizz buzz 11 fiz 13 14 fizzbuzz 16 ...
TODO: Lösung kommt hier hin und wird collapsable gemacht mit html/css on print collapsed
mit Listen
mit Tuples
mit Strings
mit Dictonaries
Übungsaufgaben
-
Addiere alle ungeraden Zahlen zwischen 1 und 100 miteinander
-
Zähle wie oft ein Buchstabe in einem String vorkommmt
-
Lass den User eine Zahl eingeben und berechne den faktorialen Wert
-
Lass den User ein Text eingeben und zähle wie viele Konsanten und Vokale darin vorkommmen
-
Berechne Medium, Maximum und Minimum von einem Zahlenvektor
-
Lass den User eine Zahl eingeben und addiere alle Zahlen bis null darauf. Sprich wenn der User die Zahl 89 eingibt, dann addiere 88, 87, 86 ... bis 0 auf auf die ursprüngliche Zahl.
-
Tannenbaum
while
Funktionen
Eigene Funktionen schreiben
Named Parameters (Benannte Parameter)
return
Übungsaufgaben
-
Schreibe eine Funktion, die zwei Zahlen addiert und das Ergebnis zurückgibt.
-
Erstelle eine Funktion, die das Minimum und das Maximum aus einer Liste von Zahlen zurückgibt.
-
Schreibe eine Funktion, die eine Zahlenfolge nimmt und die geraden Zahlen zurückgibt.
-
Erstelle eine Funktion, die einen String und eine Zahl nimmt und den String so oft wiederholt wie die Zahl angibt.
-
Schreibe eine Funktion, die eine Celsius-Temperatur in Fahrenheit umwandelt. Die Formel um Celcius zu Fahrenheit umzuwandeln lautet:
°F = (°C x 1.8) + 32
Class
Virtuelle Umgebung
Herzlichen Glückwunsch, wenn du es bis hier hin geschafft hast,
dann haste schon alle Basics der Programmierung hinter dich und
ab dem nächsten Kapitel fangen wir mit dem Datascience-ischen Part.
Dafür müssen wir auch Thirdparty Packages installieren mit
dem pip
Python Package Manager, der mit der Python Installierung
per Konsole aufrufbar sein sollte.
Daher lohnt es sich mal anzuschauen wie moderne Python Projekte aufgesetzt werden.
Virtuelle Umgebungen, oder "virtual environments",
ermöglichen es uns Packages und Libraries auf Projektebene zu installieren.
Wenn wir pip
einfach so benutzen, um Python Packages zu installieren,
dann werden all dieses Packages system-weit installiert.
Das ist auch nicht so schlimm, aber wenn wir mehr als zwei Projekte haben,
die das selbe Package brauchen, aber verschiedene Versionen davon, dann tauchen Probleme auf...
Deshalb sind "virtual environments" wie venv
so geil und venv
ist mega einfach aufzusetzen!
Packages und Libraries, die wir installieren müssen, damit unser Projekt funktioniert, nennt man auch "dependencies".
venv
In der Konsole gebe diesen Befehl ein, in dem Ordner, indem du dein Python Projekt aufsetzten möchtest.
python -m venv env
Der Befehl erstellt mit venv
eine virtuelle Umgebung, die ich env
genannt habe.
Der Name ist egal. Viele benutzen auch den Namen des Projekts mit "_env" oder irgendwas dahinter.
Ich finde "env" schon klar genug.
Mit dem Befehl wird ein neuer Ordner "env" erstellt. Innerhalb diesem Ordner interessiert uns eigentlich nur der "bin" Ordner. In dem "bin" Ordner gibt es viele verschiedene Skripts für viele verschiedene "Shells".
In der Konsole musst du in den Projektordner cd
und dann diesen Befehl, je nach Betriebsystem, ausfüheren:
- Windows:
venv\bin\activate.ps1
- macOS:
source venv/bin/activate
- Ubuntu:
source venv/bin/activate
Nun können wir mit der selben Konsole, mit der wir die virtuelle Umgebung gestartet haben,
pip
ganz normal benutzten, aber alle Packages werden nur innerhalb dieser Umgebung installiert,
und außerhalb des Projektes weiß existieren diese Packages nicht.
Das ist genau, dass was wir wollen, denn somit haben wir unser Projekt mehr isoliert und gehen
sicher, dass auch alles funktioniert; denn je mehr Isolierung desto weniger Außenfaktoren
gibt es die uns beim Programmieren stören könnten.
plotly
mehrere Plots in einem Plot
Legende im Plot
Plots speichern
Übungsaufgaben
Text Mining
License
Dieses Werk ist lizensiert unter GNU Free Documentation License Version 1.3, 3 November 2008
Contributors
Author: Marc Mäurer < marc.maeurer@pm.me >