1 Schrödinger startet durch – mit Python! – Python, erste schnelle Schritte
23
Die Programmiersprache Python!
25
Das Zen of Python und die Sache mit den PEPs
26
Python, ein erstes »Hallo Welt«
27
Fingerübungen mit »print«
31
Hallo Welt in (einzeiligen) Variationen
32
Wir müssen reden: Du und deine Variablen
35
Variablen – was geht? Und was ist voll krass korrekt?
39
Die Sache mit den (Daten-)Typen
43
Diese Datentypen sind für dich da!
47
Über den richtigen Kamm scheren – Datentypen konvertieren
48
Lustiges Konvertieren – was Python zu was macht
51
Die Funktion »str()« – verwandelt alles in Text
51
Die Funktion »int()« – ganze Zahlen
52
Die Funktion »float()« – Fließkomma mit Punkt
53
Die Funktion »bool()« – Wahrheit oder Pflicht
53
Was ist das denn für ein Typ – »type()«
54
Probier’s doch mal aus
56
Und was ist noch wichtig?
57
Syntax, Variablen, Datentypen und dynamische Typisierung
58
2 Ein Dinkel macht noch keinen Korn – Syntax, Kommentar und guter Stil
59
Eingabe, Berechnung und eine Ausgabe
61
Zahlen mit Komma – statt mit dem Punkt
64
Die Zeit der Abrechnung ist gekommen
66
Damit kannst du rechnen – die Grundrechenarten
67
Wie wär’s mit einem Rabatt?
69
Du und deine Kontrollstruktur
72
»while« – Schleifen binden leicht gemacht
72
Ganz wichtig: Die Bedingung der Schleife
73
Ein schneller Blick auf die Vergleiche
74
Schleifen binden – der erste eigene Prototyp
76
Entrückt – Einrückungen statt Klammern
79
Fehlerschau – nicht alles, was gefällt, ist auch erlaubt
82
Weiter im (Kassen-)Programm – jetzt mit Schleife
84
… es gibt keine blöden Kommentare!
87
Die »if«-Anweisung – wenn schon, denn schon
88
Zeit für Entscheidungen – dein erstes »if«
89
Wenn, dann und ansonsten?
91
Wenn schon, denn schon und auch noch »else« …
92
Einfachere Bedingungen!
93
Kürzeres »else if« mit »elif«
94
»while« – The Python-Way mit »break«
97
Was hast du gelernt? Was haben wir gemacht?
98
3 Arbeitszimmer und Werkbänke – Funktionen und Rückgabewerte
99
Der Name der Funktion
101
Falsche oder richtige Funktionsnamen?
102
Eigene Funktionen – der erste Prototyp
103
Deine Funktion im Programmablauf
105
Deine erste eigene Funktion
106
Dynamik dank Parameter?
107
Zeit zum Ausprobieren! Einmal »lecker Funktion« mit extra Parametern!
109
Mehr Freiheit dank der Standardwerte
110
Standardwerte – Probieren geht über Studieren
111
Schlüssel-Wert-Paare – alles richtig zugeordnet
113
Wie könnte so eine Funktion »spam« aussehen?
114
Besser als jede Doku – Docstrings
116
Weiter mit der Funktion in Kastenform
118
Funktionen – die Super-Fehlervermeider
120
The return of the living values
124
Der »Wertekorrigierer« – Steuerung mit »return«
126
Mehrere Werte mit »return« zurückgeben
127
Du und deine Funktion – ein paar Beispiele
128
Spiel’s noch mal Sam – die Rekursion!
129
Die dunkle Seite der Funktionen – »local« und »global«
130
Lokal vs. global – was geht?
131
»global« – die dunkle Seite der Macht
132
Große Aufgabe dank Funktionen ganz klein – Kassenprogramm reloaded
133
Was hast du gelernt? Was haben wir gemacht?
136
4 Listen, Tupel, Sets und Dictionaries – … alle Daten sind schon da!
137
Der 1. FC Dinkel und andere Mannschaften
141
Teile und herrsche – Teile von Listen
143
Der neue Star auf dem Feld – die »for«-Schleife
144
Wie für »for« gemacht – »range«
145
Das Hornberger Elfmeterschießen – erst mit »for« und dann mit »range«
147
Index und Wert ausgeben mit »enumerate«
149
Wenn Besuch kommt – eine Mannschaft mehr
150
Die Sache mit den Methoden
151
Eine ganze Liste anhängen mit »extend«
152
Einzelne Werte einfügen mit »insert«
153
Alles wieder andersrum – mit »reverse«
154
Geordnet und wohlsortiert, dank »sort«
154
Sortieren nach Schrödingers Gnaden
156
Ein Element aus der Liste holen und entfernen – »pop«
158
Ja, wo is’ er denn – »index«
159
Einfach nur löschen – »remove«
159
Alle Werte sind schon da – »count« und »in«
160
Du, die Liste und deine Vereine
162
Ziemlich einmalig – das Set
165
Tupel – in Stein gemeißelte Listen
167
Moment mal, wie war das mit »immutable«?
169
Du und deine Tore – gut gespeichert im Dictionary
170
Werte auslesen mit »get«
171
Zeigt her eure Werte – alle Werte eines Dictionarys ausgeben
172
Was hast du gelernt? Was haben wir gemacht?
174
5 Text, Strings und Abenteurer – Texte verändern und bearbeiten
175
Hilfreich wie eine Machete im Dschungel – der Backslash »«
178
Übung macht den Meister
182
Die erste Aufgabe – Umbenennen von Dateinamen
183
Die richtige Ausrüstung für den Textdschungel – hilfreiche Methoden
186
Alle Funktionalitäten in einer Funktion
188
Strings schöner ausgeben – mehr als nur Kosmetik
191
Variable im Text – praktisch und einfach mit »{}«
194
Der Vollständigkeit halber – formatiert mit »%«
196
Alle Wörter großgeschrieben – »title«
197
Wie oft ist das noch da – »count«
197
Wo ist der Schatz – suchen mit »find« und »rfind«
198
So machst du aus Listen Texte – »join«
199
Ist das eigentlich ’ne Zahl – »isnumeric«
200
Buchstaben und Zahlen – »isalnum«
201
Sind da nur Buchstaben – »isalpha«
201
Von der grauen Theorie zum praktischen Nutzen
202
Method Chaining – Methoden in Reihe
205
Was hast du gelernt? Was haben wir gemacht?
206
6 Von Käfern und anderen Fehlern – Nur kein Fehler ist ein guter Fehler
207
Fehlerbehandlung mit »try« und »except«
210
Bombensichere Eingaben dank »try« und »except«
211
Kenne deine Gegner – unterschiedlichen Fehlerarten
215
Fehlerbehandlungen im Eigenbau
217
Mit deinem Fehler auf du und du
218
Schönere Fehlerbehandlung mit »else« und »finally«
222
Fehler geschüttelt, nicht gerührt
223
Zu guter Letzt – »finally«
225
Debuggen (nicht nur) mit Thonny
226
Du, der Debugger und die Breakpoints
228
Gezielte Fehlerjagd mit Breakpoints
232
Was hast du gelernt? Was haben wir gemacht?
234
7 Die Module spielen verrückt – Die Standardbibliothek und noch viel mehr
235
Schnelle Infos dank Docstring und »help«
239
Ein Modul namens »dateiname«
241
Modul und trotzdem Programm
243
Das doppelt gemoppelte Modul für den direkten Test
246
Mächtig vielseitig – globale Variablen (nicht nur) in Modulen
247
Die Methode »dateiname« – nur noch flexibler
250
Schrecklich lange Modulnamen – »as«
252
Das Modul einer Variablen zuweisen
253
Module wie du und ich – Python Standard Library
256
Was für ein Zufall – »random«
258
Wo liegt der Unterschied?
259
Import mit »from«, »import« und »as« – gezielt und direkt
260
Wie viel Zufall steckt in Zufallszahlen?
262
Mehr als nur ein Import – zwei Importe
263
Was hast du gelernt? Was haben wir gemacht?
264
8 Von Klassen, Objekten und alten Griechen – Objektorientierte Programmierung
265
Die gute, alte Softwarekrise
266
Retter gesucht? Retter gefunden: OOP!
266
Ganz konkret – die Sache mit Klassen und Objekten
269
Von der ersten Klasse zum ersten Objekt
270
Alles auf Anfang – die Methode »__init__«
271
Es gibt auch ganz schnöde Variablen
274
Mehr Infos dank Docstring
275
Das Orakel von Delphi
277
Die erste Klasse am Stück – gleich mal etwas reloaded
280
Das erste eigene Objekt
281
Orakel reloaded – das Attribut ändern
285
Vorsicht beim Zugriff auf Attribute!
286
Die Sache mit den Parametern
288
Vertrauen ist gut, Kontrolle besser
289
Übergebene Werte sind gefährlich!
290
Das ist die Stunde der Methode »property«!
291
Besser als nur Setter und Getter
293
»property« und Orakel – das passt!
297
… der durchaus seltsame klingende, aber ziemlich coole »@property«-Dekorator
300
»private« und »protected« – aber gar nicht so ganz
302
Wiederverwendbarkeit und Vererbung
306
Besser als recyceln – neue Klasse aus alter Klasse
308
Super Sache dieses »super«
311
Statische Attribute und Methoden
313
Was hast du gelernt? Was haben wir gemacht?
317
9 Höchste Zeit für Datum, Zeit und Zeitangaben – Schrödingers Zeitmaschine
319
Du und deine Zeitmaschine
320
Welcher Tag ist heute? Welches Jahr!? – »date«
320
Bastel mal ein schickes Datum
322
Tag, Monat, Jahr mit Platzhaltern in Form bringen
323
Einmal Datum, geschüttelt – nicht gerührt
325
Es wird Zeit, die Zeit zu ändern …
327
Was von der ganzen Zeit noch übrig bleibt
329
Stunden, Minuten und Sekunden mit »time«
331
Ist noch Zeit für einen Dinkelkaffee?
333
Es ist an der Zeit, die Zeit zu formatieren!
335
Gestatten, »datetime«, aus dem Hause »datetime«
338
Besser als jedes Orakel – Zeit lesen mit »strptime«
339
Datum und Zeit finden – so ganz in der Praxis
341
Ganz großes Kino – Unixtime und The Epoch
343
Wann war die letzte Änderung?
345
Noch ein Wort zu »timedelta« – rechne mit der Zeit
347
… rette Weihnachten mit »timedelta«
348
Was hast du gelernt? Was haben wir gemacht?
350
10 Vom wichtigen Umgang mit Daten, Dateien und Ordnern – Endlich in Stein gemeißelt
351
Wohin mit all den Daten?
352
Das Regal auf der Gurke
353
Zeit für ein bisschen Serialisierung
356
Du und dein Regal – ein paar hilfreiche Informationen
357
Mit Netz und doppeltem Boden
358
Du und deine Textdatei – schreiben und lesen
360
Und es geht noch kürzer – mit »with«!
362
Du und deine Textdatei
363
Listen und Zeilenumbrüche schreiben
365
Im Dschungel der Ordner und Dateien
368
Halt mal die Machete – Überleben im Ordnerdschungel
372
Kopieren oder nicht kopieren, das ist hier die Frage
375
Eindeutige Hash-Werte für Vergleiche
377
Und nicht vergessen: Verschieben und Löschen
379
Was hast du gelernt? Was haben wir gemacht?
380
11 Zufallszahlen, Matrizen und Arrays – Ein klein bisschen Mathematik, die du wirklich gebrauchen kannst
381
Du, die Zufallszahlen und NumPy
383
Auf dem Weg zum Millionär – ein Lottoprogramm
386
Andere Verteilungen bei den Zufallszahlen
388
Ganz normalverteilte Werte …
391
Die Sache mit den Arrays
393
Ein paar schnelle Berechnungen
395
Weniger selbst arbeiten – Arrays mit »arange«
399
Die Sache mit den mehrdimensionalen Arrays
400
Bastelarbeiten mit Arrays
402
Was hast du gelernt? Was haben wir gemacht?
406
12 Grafische Oberflächen – Buttons, GUI und Layout-Manager
407
Der Layout-Manager »pack« und die Sache mit den Frames
411
Mit deinem Fenster auf du und du
414
Ein bisschen Kosmetik mit schöneren Elementen
419
Die Sache mit dem Lambda – nicht nur für GUIs
421
Button mit Parametern – ganz einfach dank Lambda
423
Rechnen mit dem Schrödinator und die Sache mit den »tkinter«-Variablen
427
Ganz kurz noch schönere Schriften
429
Ereignisse im objektorientieren Fenster
430
Das Schrödinger-Zeichenprogramm
438
Was hast du gelernt? Was haben wir gemacht?
440
13 Von Daten, Datenbanken und SQL – Das relationale Datenbankmodell
441
Retter und Held gesucht: Datenbankprofi
443
Daten braucht das Land!
451
Keine doppelten Sachen – die Sache mit dem Primärschlüssel
454
Stopp die Viren und Trojaner!
456
»fetchall«, »fetchmany«, »fetchone« – alle, viele, einer
462
Finde die richtige Abwehrstrategie!
465
Die Sache mit dem WHERE
467
Schönere Datenbankverbindung mit »with«
470
Weiter im Programm mit der kontrollierten Eingabe
471
Eine Funktion, alles zu speichern …
473
Zeit, die Viren zu stoppen – die Auswertung der Daten
475
Höchste Zeit für schnelle Auswertungen
479
Finale – Ändern mit UPDATE
486
Die Sache mit den Normalformen
491
Mehr Leistung mit dem Index
496
Was hast du gelernt? Was haben wir gemacht?
498
14 Hast du mal einen Chart für mich? – Zahlen und Daten im Überfluss
499
Drei Kurven sollt ihr sein
505
Zeit für die erste Auswertung
507
Nicht nur für Charts: Schlaue Listen mit List Comprehension
509
Kleine, schlaue Listen selbst gemacht
512
Da geht noch was – noch ein »if« und auch ein »else«
518
Sahne, Frucht und Dinkel – was ist am beliebtesten?
520
Mehr als nur ein Fenster – die Sache mit den »subplots«
523
Noch mehr Torten – das Kuchendiagramm
526
Du und deine Normalverteilung – von ziemlich eindimensional bis schick in 3D
529
Was hast du gelernt? Was haben wir gemacht?
532
15 Daten, Statistik, Data Science und künstliche Intelligenz – Wenn der eigene Kopf schon raucht
533
Richtige Ergebnisse – mal ganz ohne Formel
537
Und jetzt alles mit echter KI
540
(Trainings-)Daten braucht das Land
541
Nicht für die Schule lernt die KI
541
Zeit, das Orakel zu befragen
542
Die zweite Zahlenreihe
543
Zeit für noch mehr Lernen lassen
544
Virenerkennung mit dem RandomForestClassifier
547
Daten polieren – mit der richtigen Strategie!
550
Mittelwert und Median als Strategie
554
Was hast du gelernt? Was haben wir gemacht?
556
17 Reguläre Ausdrücke – Das Schweizer Messer der Textverarbeitung
575
Eine Suche – ganz klassisch
577
Mit regulären Ausdrücken ist das kein Problem!
580
Nur mal kurz: Ein paar Flaggen
585
Eine Funktion zur passgenauen Wortsuche
587
Vordefinierte Zeichenklassen, ein Punkt und viele Beispiele
591
Ein Beispiel – die Suche nach Datum und Zeit
594
Besser als jedes Orakel – das Matchobjekt auslesen
596
Finde die Kennung – probieren geht über studieren
597
Selber basteln – eigene Zeichenklassen
600
Schöneres Datum dank eigener Zeichenklassen
603
Quantifier – wie oft oder vielleicht auch gar nicht?
606
Mehr als ein Treffer – »findall« und »finditer«
609
Mach mal was mit Quantifiern
610
Ganz kurz: Quantifier mit »?«, »*« und »+«
613
Ein (fast) gültiges Kennwort
614
Ein Anfang, ein Ende und ein paar Empfehlungen
616
Suchgruppen – mehr als nur ein Zeichen
619
Die Sache mit »compile«
621
Was hast du gelernt? Was haben wir gemacht?
622