- Broschiertes Buch
- Merkliste
- Auf die Merkliste
- Bewerten Bewerten
- Teilen
- Produkt teilen
- Produkterinnerung
- Produkterinnerung
Vom Feinsten! Lerne Python so, dass es Spaß macht und du alles behältst! Schrödinger taucht voll ein und ist begeistert von der vielseitigen Sprache - und du bist dabei. Vom Maker-Projekt bis zur KI liegt ihr mit Python genau richtig. Damit alles gut funktioniert, knöpft ihr zwei euch erst einmal die Sprachgrundlagen vor und fangt dabei ganz vorne an. Dabei lernt ihr direkt so zu programmieren, dass ihr auch in größeren Projekten guten Code schreibt. Schrödinger hilft dir gleich doppelt beim Lernen: Mit einem Kumpel bleibt nicht nur mehr hängen. Er stellt auch viele Fragen - und nicht selten…mehr
Andere Kunden interessierten sich auch für
- Michael IndenEinfach Python22,90 €
- Joachim SteinwendnerNeuronale Netze programmieren mit Python29,90 €
- Hauke FehrEigene Apps programmieren24,90 €
- David KopecAlgorithmen in Python29,90 €
- Bernhard LahresObjektorientierte Programmierung49,90 €
- Uwe PostBesser coden29,90 €
- Al SweigartDer Weg zum Python-Profi34,90 €
-
-
-
-
-
-
-
-
-
-
-
-
-
Vom Feinsten! Lerne Python so, dass es Spaß macht und du alles behältst! Schrödinger taucht voll ein und ist begeistert von der vielseitigen Sprache - und du bist dabei. Vom Maker-Projekt bis zur KI liegt ihr mit Python genau richtig. Damit alles gut funktioniert, knöpft ihr zwei euch erst einmal die Sprachgrundlagen vor und fangt dabei ganz vorne an. Dabei lernt ihr direkt so zu programmieren, dass ihr auch in größeren Projekten guten Code schreibt. Schrödinger hilft dir gleich doppelt beim Lernen: Mit einem Kumpel bleibt nicht nur mehr hängen. Er stellt auch viele Fragen - und nicht selten die, die du auch gerade stellen wolltest.
Zu allen Themen gibt erst Erklärungen und dann Aufgaben: Mal entsteht eine Anwendung, mal gibt es Code zu reparieren, und am Ende gibt es Übungen und Fragen, die sicherstellen, dass ihr alles verstanden habt.
Fantastisch illustriert. Für Einsteiger, Umsteiger und Fans.
Aus dem Inhalt:
Installationshilfe und gründlicher EinstiegObjektorientierung aus der Profi-PraxisDas "Zen of Python"Umgang mit Zeit und DatumModuleAlles rund um DatenbankenKeine Angst vor regulären AusdrückenEinblicke in Künstliche IntelligenzUnmengen an Beispielcode und Übungen
Zu allen Themen gibt erst Erklärungen und dann Aufgaben: Mal entsteht eine Anwendung, mal gibt es Code zu reparieren, und am Ende gibt es Übungen und Fragen, die sicherstellen, dass ihr alles verstanden habt.
Fantastisch illustriert. Für Einsteiger, Umsteiger und Fans.
Aus dem Inhalt:
Installationshilfe und gründlicher EinstiegObjektorientierung aus der Profi-PraxisDas "Zen of Python"Umgang mit Zeit und DatumModuleAlles rund um DatenbankenKeine Angst vor regulären AusdrückenEinblicke in Künstliche IntelligenzUnmengen an Beispielcode und Übungen
Produktdetails
- Produktdetails
- Rheinwerk Computing
- Verlag: Rheinwerk Computing / Rheinwerk Verlag
- Artikelnr. des Verlages: 459/06745
- Seitenzahl: 667
- Erscheinungstermin: Juni 2021
- Deutsch
- Abmessung: 235mm x 202mm x 41mm
- Gewicht: 1608g
- ISBN-13: 9783836267458
- ISBN-10: 3836267454
- Artikelnr.: 61091756
- Rheinwerk Computing
- Verlag: Rheinwerk Computing / Rheinwerk Verlag
- Artikelnr. des Verlages: 459/06745
- Seitenzahl: 667
- Erscheinungstermin: Juni 2021
- Deutsch
- Abmessung: 235mm x 202mm x 41mm
- Gewicht: 1608g
- ISBN-13: 9783836267458
- ISBN-10: 3836267454
- Artikelnr.: 61091756
Schrödingers Büro ... 4
Schrödingers Werkstatt ... 6
Schrödingers Wohnzimmer ... 8
Impressum ... 10
Inhaltsverzeichnis ... 12
Vorwort ... 22
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
Funktionen ... 100
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
Du und deine Liste ... 138
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
Texte zusammenfügen ... 180
Ü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
Dein erstes Attribut ... 272
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 zum Lesen ... 355
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
Zeilenweises Lesen ... 367
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
Bau mal ein Array ... 398
Weniger selbst arbeiten -- Arrays mit »arange« ... 399
Die Sache mit den mehrdimensionalen Arrays ... 400
Bastelarbeiten mit Arrays ... 402
Rechnen mit Arrays ... 404
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
16. Datenaustausch mit CSV und JSON -- Daten schreiben -- Daten lesen ... 557
Ein paar Einstellungen und der richtige Dialekt ... 563
Da geht auch was mit Dictionaries ... 565
Zeit zu lesen ... 567
Die Sache mit JSON ... 570
Einmal JSON und zurück ... 571
Auch JSON will gelesen sein ... 573
Was hast du gelernt? Was haben wir gemacht? ... 574
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
Anhang. Die verlorenen Kapitel ... 623
A ... Installation von Python unter Windows -- Ein neues Zuhause für Python ... 625
B ... Die Python-Shell -- Schnell mal machen, und das voll interaktiv ... 631
C ... PEP 20 --The Zen of Python ... 639
D ... Die All-in-one-Entwicklungsumgebung -- Wundertüte Thonny ... 643
E ... DB Browser for SQLite -- Datenbanken leicht gemacht ... 653
Index ... 663
Schrödingers Werkstatt ... 6
Schrödingers Wohnzimmer ... 8
Impressum ... 10
Inhaltsverzeichnis ... 12
Vorwort ... 22
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
Funktionen ... 100
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
Du und deine Liste ... 138
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
Texte zusammenfügen ... 180
Ü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
Dein erstes Attribut ... 272
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 zum Lesen ... 355
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
Zeilenweises Lesen ... 367
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
Bau mal ein Array ... 398
Weniger selbst arbeiten -- Arrays mit »arange« ... 399
Die Sache mit den mehrdimensionalen Arrays ... 400
Bastelarbeiten mit Arrays ... 402
Rechnen mit Arrays ... 404
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
16. Datenaustausch mit CSV und JSON -- Daten schreiben -- Daten lesen ... 557
Ein paar Einstellungen und der richtige Dialekt ... 563
Da geht auch was mit Dictionaries ... 565
Zeit zu lesen ... 567
Die Sache mit JSON ... 570
Einmal JSON und zurück ... 571
Auch JSON will gelesen sein ... 573
Was hast du gelernt? Was haben wir gemacht? ... 574
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
Anhang. Die verlorenen Kapitel ... 623
A ... Installation von Python unter Windows -- Ein neues Zuhause für Python ... 625
B ... Die Python-Shell -- Schnell mal machen, und das voll interaktiv ... 631
C ... PEP 20 --The Zen of Python ... 639
D ... Die All-in-one-Entwicklungsumgebung -- Wundertüte Thonny ... 643
E ... DB Browser for SQLite -- Datenbanken leicht gemacht ... 653
Index ... 663
Schrödingers Büro ... 4
Schrödingers Werkstatt ... 6
Schrödingers Wohnzimmer ... 8
Impressum ... 10
Inhaltsverzeichnis ... 12
Vorwort ... 22
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
Funktionen ... 100
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
Du und deine Liste ... 138
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
Texte zusammenfügen ... 180
Ü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
Dein erstes Attribut ... 272
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 zum Lesen ... 355
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
Zeilenweises Lesen ... 367
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
Bau mal ein Array ... 398
Weniger selbst arbeiten -- Arrays mit »arange« ... 399
Die Sache mit den mehrdimensionalen Arrays ... 400
Bastelarbeiten mit Arrays ... 402
Rechnen mit Arrays ... 404
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
16. Datenaustausch mit CSV und JSON -- Daten schreiben -- Daten lesen ... 557
Ein paar Einstellungen und der richtige Dialekt ... 563
Da geht auch was mit Dictionaries ... 565
Zeit zu lesen ... 567
Die Sache mit JSON ... 570
Einmal JSON und zurück ... 571
Auch JSON will gelesen sein ... 573
Was hast du gelernt? Was haben wir gemacht? ... 574
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
Anhang. Die verlorenen Kapitel ... 623
A ... Installation von Python unter Windows -- Ein neues Zuhause für Python ... 625
B ... Die Python-Shell -- Schnell mal machen, und das voll interaktiv ... 631
C ... PEP 20 --The Zen of Python ... 639
D ... Die All-in-one-Entwicklungsumgebung -- Wundertüte Thonny ... 643
E ... DB Browser for SQLite -- Datenbanken leicht gemacht ... 653
Index ... 663
Schrödingers Werkstatt ... 6
Schrödingers Wohnzimmer ... 8
Impressum ... 10
Inhaltsverzeichnis ... 12
Vorwort ... 22
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
Funktionen ... 100
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
Du und deine Liste ... 138
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
Texte zusammenfügen ... 180
Ü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
Dein erstes Attribut ... 272
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 zum Lesen ... 355
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
Zeilenweises Lesen ... 367
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
Bau mal ein Array ... 398
Weniger selbst arbeiten -- Arrays mit »arange« ... 399
Die Sache mit den mehrdimensionalen Arrays ... 400
Bastelarbeiten mit Arrays ... 402
Rechnen mit Arrays ... 404
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
16. Datenaustausch mit CSV und JSON -- Daten schreiben -- Daten lesen ... 557
Ein paar Einstellungen und der richtige Dialekt ... 563
Da geht auch was mit Dictionaries ... 565
Zeit zu lesen ... 567
Die Sache mit JSON ... 570
Einmal JSON und zurück ... 571
Auch JSON will gelesen sein ... 573
Was hast du gelernt? Was haben wir gemacht? ... 574
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
Anhang. Die verlorenen Kapitel ... 623
A ... Installation von Python unter Windows -- Ein neues Zuhause für Python ... 625
B ... Die Python-Shell -- Schnell mal machen, und das voll interaktiv ... 631
C ... PEP 20 --The Zen of Python ... 639
D ... Die All-in-one-Entwicklungsumgebung -- Wundertüte Thonny ... 643
E ... DB Browser for SQLite -- Datenbanken leicht gemacht ... 653
Index ... 663