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
Die Sache mit dem Walross :=
98
match – case, wähl mal
100
Was hast du gelernt? Was haben wir gemacht?
106
3 Arbeitszimmer und Werkbänke. Funktionen und Rückgabewerte
107
Der Name der Funktion
109
Falsche oder richtige Funktionsnamen?
110
Eigene Funktionen – der erste Prototyp
111
Deine Funktion im Programmablauf
113
Deine erste eigene Funktion
114
Dynamik dank Parameter?
115
Zeit zum Ausprobieren! Einmal »lecker Funktion« mit extra Parametern!
117
Mehr Freiheit dank der Standardwerte
118
Standardwerte – Probieren geht über Studieren
119
Schlüssel-Wert-Paare – alles richtig zugeordnet
121
Wie könnte so eine Funktion »spam« aussehen?
122
Besser als jede Doku – Docstrings
124
Weiter mit der Funktion in Kastenform
126
Funktionen – die Super-Fehlervermeider
128
The return of the living values
132
Der »Wertekorrigierer« – Steuerung mit »return«
134
Mehrere Werte mit »return« zurückgeben
135
Du und deine Funktion – ein paar Beispiele
136
Spiel’s noch mal Sam – die Rekursion!
137
Die dunkle Seite der Funktionen – »local« und »global«
138
Lokal vs. global – was geht?
139
»global« – die dunkle Seite der Macht
140
Große Aufgabe dank Funktionen ganz klein – Kassenprogramm reloaded
141
Was hast du gelernt? Was haben wir gemacht?
144
4 Listen, Tupel, Sets und Dictionaries. ... alle Daten sind schon da!
145
Der 1. FC Dinkel und andere Mannschaften
149
Teile und herrsche – Teile von Listen
151
Der neue Star auf dem Feld – die »for«-Schleife
152
Wie für »for« gemacht – »range«
153
Das Hornberger Elfmeterschießen – erst mit »for« und dann mit »range«
155
Index und Wert ausgeben mit »enumerate«
157
Wenn Besuch kommt – eine Mannschaft mehr
158
Die Sache mit den Methoden
159
Eine ganze Liste anhängen mit »extend«
160
Einzelne Werte einfügen mit »insert«
161
Alles wieder andersrum – mit »reverse«
162
Geordnet und wohlsortiert, dank »sort«
162
Sortieren nach Schrödingers Gnaden
164
Ein Element aus der Liste holen und entfernen – »pop«
166
Ja, wo is’ er denn – »index«
167
Einfach nur löschen – »remove«
167
Alle Werte sind schon da – »count« und »in«
168
Du, die Liste und deine Vereine
170
Ziemlich einmalig – das Set
173
Tupel – in Stein gemeißelte Listen
175
Du und deine Tore – gut gespeichert im Dictionary
178
Werte auslesen mit »get«
179
Zeigt her eure Werte – alle Werte eines Dictionarys ausgeben
180
Was hast du gelernt? Was haben wir gemacht?
182
5 Text, Strings und Abenteurer. Texte verändern und bearbeiten
183
Hilfreich wie eine Machete im Dschungel – der Backslash »«
186
Übung macht den Meister
190
Die erste Aufgabe – Umbenennen von Dateinamen
191
Die richtige Ausrüstung für den Textdschungel – hilfreiche Methoden
194
Alle Funktionalitäten in einer Funktion
196
Strings schöner ausgeben – mehr als nur Kosmetik
199
Variable im Text – praktisch und einfach mit »{}«
202
Der Vollständigkeit halber – formatiert mit »%«
204
Alle Wörter großgeschrieben – »title«
205
Wie oft ist das noch da – »count«
205
Wo ist der Schatz – suchen mit »find« und »rfind«
206
So machst du aus Listen Texte – »join«
207
Ist das eigentlich ’ne Zahl – »isnumeric«
208
Buchstaben und Zahlen – »isalnum«
209
Sind da nur Buchstaben – »isalpha«
209
Von der grauen Theorie zum praktischen Nutzen
210
Method Chaining – Methoden in Reihe
213
Was hast du gelernt? Was haben wir gemacht?
214
6 Von Käfern und anderen Fehlern. Nur kein Fehler ist ein guter Fehler
215
Fehlerbehandlung mit »try« und »except«
218
Bombensichere Eingaben dank »try« und »except«
219
Kenne deine Gegner – unterschiedliche Fehlerarten
223
Fehlerbehandlungen im Eigenbau
225
Mit deinem Fehler auf du und du
226
Schönere Fehlerbehandlung mit »else« und »finally«
230
Fehler geschüttelt, nicht gerührt
231
Zu guter Letzt – »finally«
233
Debuggen (nicht nur) mit Thonny
234
Du, der Debugger und die Breakpoints
236
Gezielte Fehlerjagd mit Breakpoints
240
Was hast du gelernt? Was haben wir gemacht?
242
7 Die Module spielen verrückt. Die Standardbibliothek und noch viel mehr
243
Schnelle Infos dank Docstring und »help«
247
Ein Modul namens »dateiname«
249
Modul und trotzdem Programm
251
Das doppelt gemoppelte Modul für den direkten Test
254
Mächtig vielseitig – globale Variablen (nicht nur) in Modulen
255
Die Methode »dateiname« – nur noch flexibler
258
Schrecklich lange Modulnamen – »as«
260
Das Modul einer Variablen zuweisen
261
Module wie du und ich – Python Standard Library
264
Was für ein Zufall – »random«
266
Wo liegt der Unterschied?
267
Import mit »from«, »import« und »as« – gezielt und direkt
268
Wie viel Zufall steckt in Zufallszahlen?
270
Mehr als nur ein Import – zwei Importe
271
Was hast du gelernt? Was haben wir gemacht?
272
8 Von Klassen, Objekten und alten Griechen. Objektorientierte Programmierung
273
Die gute, alte Softwarekrise
274
Retter gesucht? Retter gefunden: OOP!
274
Ganz konkret – die Sache mit Klassen und Objekten
277
Von der ersten Klasse zum ersten Objekt
278
Alles auf Anfang – die Methode »__init__«
279
Es gibt auch ganz schnöde Variablen
282
Mehr Infos dank Docstring
283
Das Orakel von Delphi
285
Die erste Klasse am Stück – gleich mal etwas reloaded
288
Das erste eigene Objekt
289
Orakel reloaded – das Attribut ändern
293
Vorsicht beim Zugriff auf Attribute!
294
Die Sache mit den Parametern
296
Vertrauen ist gut, Kontrolle besser
297
Übergebene Werte sind gefährlich!
298
Das ist die Stunde der Methode »property«!
299
Besser als nur Setter und Getter
301
»property« und Orakel – das passt!
305
… der durchaus seltsame klingende, aber ziemlich coole »@property«-Dekorator
308
»private« und »protected« – aber gar nicht so ganz
310
Wiederverwendbarkeit und Vererbung
314
Besser als recyceln – neue Klasse aus alter Klasse
316
Super Sache dieses »super«
319
Statische Attribute und Methoden
321
Was hast du gelernt? Was haben wir gemacht?
325
9 Höchste Zeit für Datum, Zeit und Zeitangaben. Schrödingers Zeitmaschine
327
Du und deine Zeitmaschine
328
Welcher Tag ist heute? Welches Jahr!? – »date«
328
Bastel mal ein schickes Datum
330
Tag, Monat, Jahr mit Platzhaltern in Form bringen
331
Einmal Datum, geschüttelt – nicht gerührt
333
Es wird Zeit, die Zeit zu ändern …
335
Was von der ganzen Zeit noch übrig bleibt
337
Stunden, Minuten und Sekunden mit »time«
339
Ist noch Zeit für einen Dinkelkaffee?
341
Es ist an der Zeit, die Zeit zu formatieren!
343
Gestatten, »datetime«, aus dem Hause »datetime«
346
Besser als jedes Orakel – Zeit lesen mit »strptime«
347
Datum und Zeit finden – so ganz in der Praxis
349
Ganz großes Kino – Unixtime und The Epoch
351
Wann war die letzte Änderung?
353
Noch ein Wort zu »timedelta« – rechne mit der Zeit
355
… rette Weihnachten mit »timedelta«
356
Was hast du gelernt? Was haben wir gemacht?
358
10 Vom wichtigen Umgang mit Daten, Dateien und Ordnern. Endlich in Stein gemeißelt
359
Wohin mit all den Daten?
360
Das Regal auf der Gurke
361
Zeit für ein bisschen Serialisierung
364
Du und dein Regal – ein paar hilfreiche Informationen
365
Mit Netz und doppeltem Boden
366
Du und deine Textdatei – schreiben und lesen
368
Und es geht noch kürzer – mit »with«!
370
Du und deine Textdatei
371
Listen und Zeilenumbrüche schreiben
373
Im Dschungel der Ordner und Dateien
376
Halt mal die Machete – Überleben im Ordnerdschungel
380
Kopieren oder nicht kopieren, das ist hier die Frage
383
Eindeutige Hash-Werte für Vergleiche
385
Und nicht vergessen: Verschieben und Löschen
387
Was hast du gelernt? Was haben wir gemacht?
388
11 Zufallszahlen, Matrizen und Arrays. Ein klein bisschen Mathematik, die du wirklich gebrauchen kannst
389
Du, die Zufallszahlen und NumPy
391
Auf dem Weg zum Millionär – ein Lottoprogramm
394
Andere Verteilungen bei den Zufallszahlen
396
Ganz normalverteilte Werte …
399
Die Sache mit den Arrays
401
Ein paar schnelle Berechnungen
403
Weniger selbst arbeiten – Arrays mit »arange«
407
Die Sache mit den mehrdimensionalen Arrays
408
Bastelarbeiten mit Arrays
410
Was hast du gelernt? Was haben wir gemacht?
414
12 Grafische Oberflächen. Buttons, GUI und Layout-Manager
415
Der Layout-Manager »pack« und die Sache mit den Frames
419
Mit deinem Fenster auf du und du
422
Ein bisschen Kosmetik mit schöneren Elementen
427
Die Sache mit dem Lambda – nicht nur für GUIs
429
Button mit Parametern – ganz einfach dank Lambda
431
Rechnen mit dem Schrödinator und die Sache mit den »tkinter«-Variablen
435
Ganz kurz noch schönere Schriften
437
Ereignisse im objektorientieren Fenster
438
Das Schrödinger-Zeichenprogramm
446
Was hast du gelernt? Was haben wir gemacht?
448
13 Von Daten, Datenbanken und SQL. Das relationale Datenbankmodell
449
Retter und Held gesucht: Datenbankprofi
451
Daten braucht das Land!
459
Keine doppelten Sachen – die Sache mit dem Primärschlüssel
462
Stopp die Viren und Trojaner!
464
»fetchall«, »fetchmany«, »fetchone« – alle, viele, einer
470
Finde die richtige Abwehrstrategie!
473
Die Sache mit dem WHERE
475
Schönere Datenbankverbindung mit »with«
478
Weiter im Programm mit der kontrollierten Eingabe
479
Eine Funktion, alles zu speichern …
481
Zeit, die Viren zu stoppen – die Auswertung der Daten
483
Höchste Zeit für schnelle Auswertungen
487
Finale – Ändern mit UPDATE
494
Die Sache mit den Normalformen
499
Mehr Leistung mit dem Index
504
Was hast du gelernt? Was haben wir gemacht?
506
14 Hast du mal einen Chart für mich? Zahlen und Daten im Überfluss
507
Drei Kurven sollt ihr sein
513
Zeit für die erste Auswertung
515
Nicht nur für Charts: Schlaue Listen mit List Comprehension
517
Kleine, schlaue Listen selbst gemacht
520
Da geht noch was – noch ein »if« und auch ein »else«
526
Sahne, Frucht und Dinkel – was ist am beliebtesten?
528
Mehr als nur ein Fenster – die Sache mit den »subplots«
531
Noch mehr Torten – das Kuchendiagramm
534
Du und deine Normalverteilung – von ziemlich eindimensional bis schick in 3D
537
Was hast du gelernt? Was haben wir gemacht?
540
15 Künstliche Intelligenz & Data Science. Wenn der eigene Kopf schon raucht
541
Richtige Ergebnisse – mal ganz ohne Formel
545
Und jetzt alles mit echter KI
548
(Trainings-)Daten braucht das Land
549
Nicht für die Schule lernt die KI
549
Zeit, das Orakel zu befragen
550
Die zweite Zahlenreihe
551
Zeit für noch mehr Lernen lassen
552
Virenerkennung mit dem RandomForestClassifier
555
Daten polieren – mit der richtigen Strategie!
558
Mittelwert und Median als Strategie
562
Was hast du gelernt? Was haben wir gemacht?
564
17 Reguläre Ausdrücke. Das Schweizer Messer der Textverarbeitung
583
Eine Suche – ganz klassisch
585
Mit regulären Ausdrücken ist das kein Problem!
588
Nur mal kurz: Ein paar Flaggen
593
Eine Funktion zur passgenauen Wortsuche
595
Vordefinierte Zeichenklassen, ein Punkt und viele Beispiele
599
Ein Beispiel – die Suche nach Datum und Zeit
602
Besser als jedes Orakel – das Matchobjekt auslesen
604
Finde die Kennung – probieren geht über studieren
605
Selber basteln – eigene Zeichenklassen
608
Schöneres Datum dank eigener Zeichenklassen
611
Quantifier – wie oft oder vielleicht auch gar nicht?
614
Mehr als ein Treffer – »findall« und »finditer«
617
Mach mal was mit Quantifiern
618
Ganz kurz: Quantifier mit »?«, »*« und »+«
621
Ein (fast) gültiges Kennwort
622
Ein Anfang, ein Ende und ein paar Empfehlungen
624
Suchgruppen – mehr als nur ein Zeichen
627
Die Sache mit »compile«
629
Was hast du gelernt? Was haben wir gemacht?
630