E-Book, Deutsch, 992 Seiten
Reihe: mitp Professional
Weigend Python 3
2018
ISBN: 978-3-95845-792-8
Verlag: MITP
Format: PDF
Kopierschutz: Adobe DRM (»Systemvoraussetzungen)
Lernen und professionell anwenden. Das umfassende Praxisbuch
E-Book, Deutsch, 992 Seiten
Reihe: mitp Professional
ISBN: 978-3-95845-792-8
Verlag: MITP
Format: PDF
Kopierschutz: Adobe DRM (»Systemvoraussetzungen)
Michael Weigend ist Informatiklehrer und hat bereits mehrere Bücher zu Python geschrieben wie z.B. Python Ge-Packt.
Zielgruppe
Programmierer
Autoren/Hrsg.
Weitere Infos & Material
1;Cover;1
2;Titel;3
3;Impressum;4
4;Einleitung;23
4.1;Warum Python?;23
4.2;Python 3;23
4.3;An wen wendet sich dieses Buch?;23
4.4;Inhalt und Aufbau;24
4.5;Hinweise zur Typographie;25
4.6;Programmbeispiele;26
5;Kapitel 1: Grundlagen;27
5.1;1.1 Was ist Programmieren?;27
5.2;1.2 Hardware und Software;28
5.3;1.3 Programm als Algorithmus;29
5.4;1.4 Syntax und Semantik;30
5.5;1.5 Interpreter und Compiler;30
5.6;1.6 Programmierparadigmen;32
5.7;1.7 Objektorientierte Programmierung;33
5.7.1;1.7.1 Strukturelle Zerlegung;33
5.7.2;1.7.2 Die Welt als System von Objekten;34
5.7.3;1.7.3 Objekte besitzen Attribute und beherrschen Methoden;35
5.7.4;1.7.4 Objekte sind Instanzen von Klassen;36
5.8;1.8 Hintergrund: Geschichte der objektorientierten Programmierung;36
5.9;1.9 Aufgaben;37
5.10;1.10 Lösungen;38
6;Kapitel 2: Der Einstieg – Python im interaktiven Modus;39
6.1;2.1 Python installieren;39
6.2;2.2 Python im interaktiven Modus;42
6.2.1;2.2.1 Start des Python-Interpreters in einem Konsolenfenster;42
6.2.2;2.2.2 Die Python-Shell von IDLE;43
6.2.3;2.2.3 Die ersten Python-Befehle ausprobieren;43
6.2.4;2.2.4 Hotkeys;44
6.3;2.3 Objekte;45
6.4;2.4 Namen;46
6.5;2.5 Hintergrund: Syntax-Regeln für Bezeichner;47
6.6;2.6 Schlüsselwörter;48
6.7;2.7 Anweisungen;49
6.7.1;2.7.1 Ausdruckanweisungen;50
6.7.2;2.7.2 Import-Anweisungen;54
6.7.3;2.7.3 Zuweisungen;56
6.7.4;2.7.4 Erweiterte Zuweisungen;59
6.7.5;2.7.5 Hintergrund: Dynamische Typisierung;59
6.8;2.8 Aufgaben;61
6.9;2.9 Lösungen;62
7;Kapitel 3: Python-Skripte;65
7.1;3.1 Skripte editieren und ausführen mit IDLE;65
7.2;3.2 Ausführen eines Python-Skripts;66
7.3;3.3 Kommentare;69
7.4;3.4 Die Zeilenstruktur von Python-Programmen;69
7.5;3.5 Das EVA-Prinzip;73
7.6;3.6 Phasen der Programmentwicklung;74
7.7;3.7 Guter Programmierstil;75
7.8;3.8 Hintergrund: Die Kunst des Fehlerfindens;78
7.9;3.9 Aufgaben;80
7.10;3.10 Lösungen;81
8;Kapitel 4: Standard-Datentypen;83
8.1;4.1 Daten als Objekte;83
8.2;4.2 Fundamentale Datentypen im Überblick;85
8.3;4.3 Typen und Klassen;86
8.4;4.4 NoneType;87
8.5;4.5 Wahrheitswerte – der Datentyp bool;87
8.6;4.6 Ganze Zahlen;88
8.7;4.7 Gleitkommazahlen;90
8.8;4.8 Komplexe Zahlen;91
8.9;4.9 Arithmetische Operatoren für Zahlen;92
8.10;4.10 Sequenzen;97
8.10.1;4.10.1 Zeichenketten (Strings);98
8.10.2;4.10.2 Bytestrings;100
8.10.3;4.10.3 Tupel;101
8.10.4;4.10.4 Liste;102
8.10.5;4.10.5 Bytearray;103
8.10.6;4.10.6 Einige Grundoperationen für Sequenzen;103
8.10.7;4.10.7 Veränderbare und unveränderbare Sequenzen;106
8.11;4.11 Mengen;107
8.12;4.12 Dictionaries;108
8.13;4.13 Typumwandlungen;108
8.13.1;4.13.1 int();109
8.13.2;4.13.2 float();110
8.13.3;4.13.3 complex();111
8.13.4;4.13.4 bool();111
8.13.5;4.13.5 str();111
8.13.6;4.13.6 dict(), list() und tuple();112
8.14;4.14 Aufgaben;112
8.15;4.15 Lösungen;115
9;Kapitel 5: Kontrollstrukturen;119
9.1;5.1 Einfache Bedingungen;119
9.1.1;5.1.1 Vergleiche;119
9.1.2;5.1.2 Zugehörigkeit zu einer Menge (in, not in);123
9.1.3;5.1.3 Beliebige Ausdrücke als Bedingungen;123
9.2;5.2 Zusammengesetzte Bedingungen – logische Operatoren;124
9.2.1;5.2.1 Negation (not);124
9.2.2;5.2.2 Konjunktion (and);125
9.2.3;5.2.3 Disjunktion (or);126
9.2.4;5.2.4 Formalisierung von Bedingungen;127
9.2.5;5.2.5 Hinweis zum Programmierstil;128
9.3;5.3 Programmverzweigungen (bedingte Anweisungen);128
9.3.1;5.3.1 Einseitige Verzweigung (if);129
9.3.2;5.3.2 Zweiseitige Verzweigung (if-else);129
9.3.3;5.3.3 Mehrfache Fallunterscheidung (elif);130
9.3.4;5.3.4 Bedingte Ausdrücke;132
9.4;5.4 Bedingte Wiederholung (while);132
9.4.1;5.4.1 Endlosschleifen;133
9.5;5.5 Iteration über eine Kollektion (for);135
9.5.1;5.5.1 Zählschleifen – Verwendung von range();136
9.5.2;5.5.2 Verschachtelte Iterationen;137
9.5.3;5.5.3 Vertiefung: Iterative Berechnung rekursiver Folgen;139
9.6;5.6 Abbruch einer Schleife mit break;139
9.6.1;5.6.1 Abbruch eines Schleifendurchlaufs mit continue;140
9.7;5.7 Abfangen von Ausnahmen mit try;141
9.7.1;5.7.1 try...except;142
9.8;5.8 Aufgaben;144
9.9;5.9 Lösungen;148
10;Kapitel 6: Funktionen;153
10.1;6.1 Aufruf von Funktionen;153
10.2;6.2 Definition von Funktionen;156
10.3;6.3 Schrittweise Verfeinerung;158
10.4;6.4 Ausführung von Funktionen;162
10.4.1;6.4.1 Globale und lokale Namen;162
10.4.2;6.4.2 Seiteneffekte – die global-Anweisung;165
10.4.3;6.4.3 Parameterübergabe;166
10.5;6.5 Voreingestellte Parameterwerte;168
10.5.1;6.5.1 Schlüsselwort-Argumente;170
10.6;6.6 Funktionen mit beliebiger Anzahl von Parametern;172
10.7;6.7 Lokale Funktionen;173
10.8;6.8 Rekursive Funktionen;174
10.9;6.9 Experimente zur Rekursion mit der Turtle-Grafik;176
10.9.1;6.9.1 Turtle-Befehle im interaktiven Modus;176
10.9.2;6.9.2 Eine rekursive Spirale;177
10.9.3;6.9.3 Baumstrukturen;179
10.9.4;6.9.4 Künstlicher Blumenkohl – selbstähnliche Bilder;180
10.10;6.10 Rekursive Zahlenfunktionen;182
10.11;6.11 Hintergrund: Wie werden rekursive Funktionen ausgeführt?;183
10.11.1;6.11.1 Execution Frames;183
10.11.2;6.11.2 Rekursionstiefe;184
10.12;6.12 Funktionen als Objekte;186
10.12.1;6.12.1 Hintergrund: Typen sind keine Funktionen;187
10.13;6.13 Lambda-Formen;187
10.14;6.14 Hinweise zum Programmierstil;188
10.14.1;6.14.1 Allgemeines;188
10.14.2;6.14.2 Funktionsnamen;188
10.14.3;6.14.3 Kommentierte Parameter;189
10.14.4;6.14.4 Docstrings;189
10.15;6.15 Aufgaben;190
10.16;6.16 Lösungen;193
11;Kapitel 7: Sequenzen, Mengen und Generatoren;197
11.1;7.1 Gemeinsame Operationen für Sequenzen;197
11.1.1;7.1.1 Zugriff auf Elemente einer Sequenz;198
11.1.2;7.1.2 Slicing von Sequenzen;199
11.1.3;7.1.3 Auspacken (unpacking);200
11.2;7.2 Vertiefung: Rekursive Funktionen für Sequenzen;201
11.2.1;7.2.1 Rekursives Summieren;201
11.2.2;7.2.2 Rekursive Suche;201
11.3;7.3 Tupel;203
11.4;7.4 Listen;204
11.4.1;7.4.1 Eine Liste erzeugen;205
11.4.2;7.4.2 Eine Liste verändern;207
11.4.3;7.4.3 Flache und tiefe Kopien;209
11.4.4;7.4.4 Listen sortieren;210
11.4.5;7.4.5 Binäre Suche in einer sortierten Liste;212
11.4.6;7.4.6 Zwei Sortierverfahren im Vergleich;213
11.4.7;7.4.7 Modellieren mit Listen – Beispiel: die Charts;217
11.5;7.5 Generatoren;221
11.5.1;7.5.1 Generatorausdrücke;222
11.5.2;7.5.2 Generatorfunktionen;222
11.5.3;7.5.3 Iteratoren;224
11.5.4;7.5.4 Verwendung von Generatoren;225
11.6;7.6 Mengen;225
11.6.1;7.6.1 Operationen für Mengen;227
11.6.2;7.6.2 Modellieren mit Mengen – Beispiel: Graphen;228
11.7;7.7 Aufgaben;231
11.8;7.8 Lösungen;233
12;Kapitel 8: Dictionaries;237
12.1;8.1 Operationen für Dictionaries;237
12.2;8.2 Wie erstellt man ein Dictionary?;238
12.2.1;8.2.1 Definition mit einem Dictionary-Display;238
12.2.2;8.2.2 Schrittweiser Aufbau eines Dictionarys;240
12.2.3;8.2.3 Ein Dictionary aus anderen Dictionaries zusammensetzen – update();241
12.3;8.3 Zugriff auf Daten in einem Dictionary;241
12.3.1;8.3.1 Vergebliche Zugriffsversuche;241
12.4;8.4 Praxisbeispiel: Vokabeltrainer;242
12.5;8.5 Typische Fehler;244
12.6;8.6 Aufgaben;244
12.7;8.7 Lösungen;247
13;Kapitel 9: Ein- und Ausgabe;251
13.1;9.1 Files;251
13.1.1;9.1.1 Die Rolle der Files bei E/A-Operationen;251
13.1.2;9.1.2 Was ist ein File?;252
13.1.3;9.1.3 Ein File-Objekt erzeugen;253
13.1.4;9.1.4 Speichern einer Zeichenkette;254
13.1.5;9.1.5 Laden einer Zeichenkette aus einer Datei;255
13.1.6;9.1.6 Absolute und relative Pfade;255
13.1.7;9.1.7 Zwischenspeichern, ohne zu schließen;258
13.1.8;9.1.8 Zugriff auf Files (lesen und schreiben);258
13.1.9;9.1.9 Speichern beliebiger Daten auf Files;260
13.2;9.2 Mehr Zuverlässigkeit durch try- und with-Anweisungen;261
13.2.1;9.2.1 try...finally;262
13.2.2;9.2.2 With-Anweisungen;263
13.3;9.3 Objekte speichern mit pickle;264
13.3.1;9.3.1 Funktionen zum Speichern und Laden;265
13.4;9.4 Die Pseudofiles sys.stdin und sys.stdout;266
13.5;9.5 Ausgabe von Werten mit der print()-Funktion;267
13.5.1;9.5.1 Anwendung: Ausgabe von Tabellen;269
13.6;9.6 Kommandozeilen-Argumente (Optionen);269
13.7;9.7 Übungen;272
13.8;9.8 Lösungen;275
14;Kapitel 10: Definition eigener Klassen;281
14.1;10.1 Klassen und Objekte;281
14.2;10.2 Definition von Klassen;283
14.3;10.3 Objekte (Instanzen);285
14.4;10.4 Zugriff auf Attribute – Sichtbarkeit;288
14.4.1;10.4.1 Öffentliche Attribute;288
14.4.2;10.4.2 Private Attribute;289
14.4.3;10.4.3 Properties;291
14.4.4;10.4.4 Dynamische Erzeugung von Attributen;293
14.5;10.5 Methoden;293
14.5.1;10.5.1 Polymorphismus – Überladen von Operatoren;294
14.6;10.6 Statische Methoden;298
14.7;10.7 Abstraktion, Verkapselung und Geheimnisprinzip;299
14.8;10.8 Vererbung;300
14.8.1;10.8.1 Spezialisierungen;300
14.8.2;10.8.2 Beispiel: Die Klasse Konto – eine Spezialisierung der Klasse Geld;301
14.8.3;10.8.3 Vertiefung: Standardklassen als Basisklassen;304
14.9;10.9 Hinweise zum Programmierstil;306
14.9.1;10.9.1 Bezeichner;306
14.9.2;10.9.2 Sichtbarkeit;306
14.9.3;10.9.3 Dokumentation von Klassen;308
14.10;10.10 Typische Fehler;308
14.11;10.11 Aufgaben;310
14.12;10.12 Lösungen;313
15;Kapitel 11: Klassenbibliotheken in Modulen speichern;319
15.1;11.1 Testen einer Klasse in einem lauffähigen Stand-alone-Skript;319
15.2;11.2 Module speichern und importieren;321
15.3;11.3 Den Zugang zu einem Modul sicherstellen;323
15.4;11.4 Programmierstil: Verwendung und Dokumentation von Modulen;325
16;Kapitel 12: Objektorientiertes Modellieren;327
16.1;12.1 Phasen einer objektorientierten Software-Entwicklung;327
16.2;12.2 Fallstudie: Modell eines Wörterbuchs;328
16.2.1;12.2.1 OOA: Entwicklung einer Klassenstruktur;328
16.2.2;12.2.2 OOD: Entwurf einer Klassenstruktur für eine Implementierung in Python;332
16.2.3;12.2.3 OOP: Implementierung der Klassenstruktur;334
16.3;12.3 Assoziationen zwischen Klassen;338
16.3.1;12.3.1 Reflexive Assoziationen;338
16.3.2;12.3.2 Aggregation;340
16.4;12.4 Beispiel: Management eines Musicals;341
16.4.1;12.4.1 OOA;341
16.4.2;12.4.2 OOD;343
16.4.3;12.4.3 OOP;343
16.5;12.5 Aufgaben;353
16.6;12.6 Lösungen;354
17;Kapitel 13: Verarbeitung von Zeichenketten;359
17.1;13.1 Standardmethoden zur Verarbeitung von Zeichenketten;359
17.1.1;13.1.1 Formatieren;360
17.1.2;13.1.2 Schreibweise;360
17.1.3;13.1.3 Tests;361
17.1.4;13.1.4 Entfernen und Aufspalten;362
17.1.5;13.1.5 Suchen und Ersetzen;363
17.2;13.2 Codierung und Decodierung;363
17.2.1;13.2.1 Platonische Zeichen und Unicode;363
17.2.2;13.2.2 Vertiefung: Zeichenketten durch Bytefolgen darstellen;365
17.3;13.3 Automatische Textproduktion;367
17.3.1;13.3.1 Texte mit variablen Teilen – Anwendung der String-Methode format();367
17.3.2;13.3.2 Vertiefung: Eine Tabelle erstellen;370
17.3.3;13.3.3 Mahnbriefe;371
17.3.4;13.3.4 Textuelle Repräsentation eines Objektes;372
17.3.5;13.3.5 F-Strings;374
17.4;13.4 Analyse von Texten;375
17.4.1;13.4.1 Chat Bots;375
17.4.2;13.4.2 Textanalyse mit einfachen Vorkommenstests;376
17.5;13.5 Reguläre Ausdrücke;378
17.5.1;13.5.1 Aufbau eines regulären Ausdrucks;379
17.5.2;13.5.2 Objekte für reguläre Ausdrücke (RE-Objekte);382
17.5.3;13.5.3 Analyse von Strings mit match() und search();383
17.5.4;13.5.4 Textpassagen extrahieren mit findall();384
17.5.5;13.5.5 Zeichenketten zerlegen mit split();385
17.5.6;13.5.6 Teilstrings ersetzen mit sub();386
17.5.7;13.5.7 Match-Objekte;387
17.6;13.6 Den Computer zum Sprechen bringen – Sprachsynthese;389
17.6.1;13.6.1 Buchstabieren;391
17.6.2;13.6.2 Den Klang der Stimme verändern;393
17.7;13.7 Aufgaben;396
17.8;13.8 Lösungen;399
18;Kapitel 14: Systemfunktionen;407
18.1;14.1 Das Modul sys – die Schnittstelle zum Laufzeitsystem;407
18.1.1;14.1.1 Informationen über die aktuelle Systemumgebung;408
18.1.2;14.1.2 Standardeingabe und -ausgabe;409
18.1.3;14.1.3 Die Objektverwaltung beobachten mit getrefcount();410
18.1.4;14.1.4 Ausführung eines Skripts beenden;411
18.2;14.2 Das Modul os – die Schnittstelle zum Betriebssystem;411
18.2.1;14.2.1 Dateien und Verzeichnisse suchen;412
18.2.2;14.2.2 Hintergrund: Zugriffsrechte abfragen und ändern (Windows und Unix);413
18.2.3;14.2.3 Dateien und Verzeichnisse anlegen und modifizieren;415
18.2.4;14.2.4 Merkmale von Dateien und Verzeichnissen abfragen;416
18.2.5;14.2.5 Pfade verarbeiten;417
18.2.6;14.2.6 Hintergrund: Umgebungsvariablen;419
18.2.7;14.2.7 Systematisches Durchlaufen eines Verzeichnisbaumes;420
18.3;14.3 Datum und Zeit;422
18.3.1;14.3.1 Funktionen des Moduls time;422
18.3.2;14.3.2 Sekundenformat;423
18.3.3;14.3.3 Zeit-Tupel;424
18.3.4;14.3.4 Zeitstrings;425
18.3.5;14.3.5 Einen Prozess unterbrechen mit sleep();426
18.4;14.4 Aufgaben;426
18.5;14.5 Lösungen;427
19;Kapitel 15: Grafische Benutzungsoberflächen mit tkinter;433
19.1;15.1 Ein einführendes Beispiel;434
19.2;15.2 Einfache Widgets;437
19.3;15.3 Die Master-Slave-Hierarchie;438
19.4;15.4 Optionen der Widgets;439
19.4.1;15.4.1 Optionen bei der Instanziierung setzen;439
19.4.2;15.4.2 Widget-Optionen nachträglich konfigurieren;440
19.4.3;15.4.3 Fonts;441
19.4.4;15.4.4 Farben;442
19.4.5;15.4.5 Rahmen;443
19.4.6;15.4.6 Die Größe eines Widgets;443
19.4.7;15.4.7 Leerraum um Text;445
19.5;15.5 Gemeinsame Methoden der Widgets;446
19.6;15.6 Die Klasse Tk;447
19.7;15.7 Die Klasse Button;447
19.8;15.8 Die Klasse Label;448
19.8.1;15.8.1 Dynamische Konfiguration der Beschriftung;448
19.8.2;15.8.2 Verwendung von Kontrollvariablen;449
19.9;15.9 Die Klasse Entry;451
19.10;15.10 Die Klasse Radiobutton;453
19.11;15.11 Die Klasse Checkbutton;455
19.12;15.12 Die Klasse Scale;457
19.13;15.13 Die Klasse Frame;459
19.14;15.14 Aufgaben;459
19.15;15.15 Lösungen;461
20;Kapitel 16: Layout;467
20.1;16.1 Der Packer;467
20.2;16.2 Layout-Fehler;469
20.3;16.3 Raster-Layout;470
20.4;16.4 Vorgehensweise bei der GUI-Entwicklung;474
20.4.1;16.4.1 Die Benutzungsoberfläche gestalten;477
20.4.2;16.4.2 Funktionalität hinzufügen;480
20.5;16.5 Aufgaben;481
20.6;16.6 Lösungen;484
21;Kapitel 17: Grafik;495
21.1;17.1 Die tkinter-Klasse Canvas;495
21.1.1;17.1.1 Generierung grafischer Elemente – ID, Positionierung und Display-Liste;496
21.1.2;17.1.2 Grafische Elemente gestalten;498
21.1.3;17.1.3 Visualisieren mit Kreisdiagrammen;500
21.2;17.2 Die Klasse PhotoImage;503
21.2.1;17.2.1 Eine Pixelgrafik erzeugen;504
21.2.2;17.2.2 Fotos analysieren und verändern;506
21.3;17.3 Bilder in eine Benutzungsoberfläche einbinden;509
21.3.1;17.3.1 Icons auf Schaltflächen;509
21.3.2;17.3.2 Hintergrundbilder;510
21.3.3;17.3.3 Hintergrund: Das PPM-Format;512
21.4;17.4 Die Python Imaging Library (PIL);513
21.4.1;17.4.1 Installation eines Moduls mit pip;513
21.4.2;17.4.2 Mit PIL beliebige Bilddateien einbinden;514
21.4.3;17.4.3 Steganografie – Informationen in Bildern verstecken;515
21.5;17.5 Aufgaben;517
21.6;17.6 Lösungen;518
22;Kapitel 18: Event-Verarbeitung;523
22.1;18.1 Einführendes Beispiel;524
22.2;18.2 Event-Sequenzen;526
22.2.1;18.2.1 Event-Typen;526
22.2.2;18.2.2 Qualifizierer für Maus- und Tastatur-Events;526
22.2.3;18.2.3 Modifizierer;528
22.3;18.3 Beispiel: Tastaturereignisse verarbeiten;528
22.4;18.4 Programmierung eines Eventhandlers;530
22.4.1;18.4.1 Beispiel für eine Event-Auswertung;531
22.5;18.5 Bindemethoden;532
22.6;18.6 Aufgaben;532
22.7;18.7 Lösungen;535
23;Kapitel 19: Komplexe Benutzungsoberflächen;541
23.1;19.1 Text-Widgets;541
23.1.1;19.1.1 Methoden der Text-Widgets;542
23.2;19.2 Rollbalken (Scrollbars);544
23.3;19.3 Menüs;546
23.3.1;19.3.1 Die Klasse Menu;546
23.3.2;19.3.2 Methoden der Klasse Menu;547
23.4;19.4 Texteditor mit Menüleiste und Pulldown-Menü;548
23.5;19.5 Dialogboxen;550
23.6;19.6 Applikationen mit mehreren Fenstern;554
23.7;19.7 Aufgaben;557
23.8;19.8 Lösungen;558
24;Kapitel 20: Threads;563
24.1;20.1 Funktionen in einem Thread ausführen;564
24.2;20.2 Thread-Objekte erzeugen – die Klasse Thread;566
24.3;20.3 Aufgaben;569
24.4;20.4 Lösungen;570
25;Kapitel 21: Fehler finden und vermeiden;575
25.1;21.1 Testen von Bedingungen;575
25.1.1;21.1.1 Ausnahmen (Exceptions);575
25.1.2;21.1.2 Testen von Vor- und Nachbedingungen mit assert;576
25.1.3;21.1.3 Vertiefung: Programmabstürze ohne Fehlermeldung;579
25.2;21.2 Debugging-Modus und optimierter Modus;581
25.3;21.3 Ausnahmen gezielt auslösen;582
25.4;21.4 Selbstdokumentation;583
25.5;21.5 Dokumentation eines Programmlaufs mit Log-Dateien;585
25.5.1;21.5.1 Grundfunktionen;585
25.5.2;21.5.2 Beispiel: Logging in der GUI-Programmierung;586
25.6;21.6 Vertiefung: Professionelles Arbeiten mit Logging;587
25.6.1;21.6.1 Logging-Levels;587
25.6.2;21.6.2 Logger-Objekte;592
25.6.3;21.6.3 Das Format der Logging-Meldungen konfigurieren;592
25.7;21.7 Debugging;594
25.8;21.8 Aufgabe;595
25.9;21.9 Lösung;596
26;Kapitel 22: CGI-Programmierung;597
26.1;22.1 Wie funktionieren CGI-Skripte?;597
26.2;22.2 Wie spät ist es? Aufbau eines CGI-Skripts;599
26.2.1;22.2.1 Ein einfacher HTTP-Server;602
26.2.2;22.2.2 Hintergrund: CGI-Skripte auf einem Host im Internet installieren;603
26.3;22.3 Kommunikation über interaktive Webseiten;604
26.3.1;22.3.1 Aufbau eines HTML-Formulars;605
26.3.2;22.3.2 Eingabekomponenten in einem HTML-Formular;606
26.4;22.4 Verarbeitung von Eingabedaten in einem CGI-Skript;608
26.5;22.5 Sonderzeichen handhaben;610
26.6;22.6 CGI-Skripte debuggen;611
26.7;22.7 Objektorientierte CGI-Skripte – Beispiel: ein Chatroom;612
26.8;22.8 CGI-Skripte mit Cookies;618
26.9;22.9 Aufgaben;621
26.10;22.10 Lösungen;623
27;Kapitel 23: Internet-Programmierung;629
27.1;23.1 Was ist ein Protokoll?;629
27.2;23.2 Übertragung von Dateien mit FTP;630
27.2.1;23.2.1 Das Modul ftplib;631
27.2.2;23.2.2 Navigieren und Downloaden;632
27.2.3;23.2.3 Ein Suchroboter für FTP-Server;634
27.3;23.3 Zugriff auf Webseiten mit HTTP;638
27.3.1;23.3.1 Automatische Auswertung von Webseiten;640
27.4;23.4 E-Mails senden mit SMTP;642
27.5;23.5 Aufgaben;645
27.6;23.6 Lösungen;647
28;Kapitel 24: Datenbanken;653
28.1;24.1 Was ist ein Datenbanksystem?;653
28.2;24.2 Entity-Relationship-Diagramme (ER-Diagramme);654
28.3;24.3 Relationale Datenbanken;655
28.4;24.4 Darstellung von Relationen als Listen oder Dictionaries;656
28.5;24.5 Das Modul sqlite3;657
28.5.1;24.5.1 Eine Tabelle anlegen;657
28.5.2;24.5.2 Anfragen an eine Datenbank;659
28.5.3;24.5.3 SQL-Anweisungen mit variablen Teilen;660
28.5.4;24.5.4 SQL-Injections;661
28.6;24.6 Online-Redaktionssystem mit Datenbankanbindung;662
28.6.1;24.6.1 Objektorientierte Analyse (OOA);664
28.6.2;24.6.2 Objektorientierter Entwurf des Systems (OOD);664
28.6.3;24.6.3 Hintergrund: Authentifizieren mit MD5-Fingerprints;666
28.6.4;24.6.4 Implementierung des Redaktionssystems mit Python (OOP);667
28.7;24.7 Aufgaben;676
28.8;24.8 Lösungen;677
29;Kapitel 25: Testen und Tuning;681
29.1;25.1 Automatisiertes Testen;681
29.2;25.2 Testen mit Docstrings – das Modul doctest;682
29.3;25.3 Praxisbeispiel: Suche nach dem Wort des Jahres;684
29.4;25.4 Klassen testen mit doctest;691
29.4.1;25.4.1 Wie testet man eine Klasse?;691
29.4.2;25.4.2 Normalisierte Whitespaces – doctest-Direktiven;692
29.4.3;25.4.3 Ellipsen verwenden;692
29.4.4;25.4.4 Dictionaries testen;693
29.5;25.5 Gestaltung von Testreihen mit unittest;693
29.5.1;25.5.1 Einführendes Beispiel mit einem Testfall;693
29.5.2;25.5.2 Klassen des Moduls unittest;695
29.5.3;25.5.3 Weiterführendes Beispiel;697
29.6;25.6 Tuning;701
29.6.1;25.6.1 Performance-Analyse mit dem Profiler;701
29.6.2;25.6.2 Praxisbeispiel: Auswertung astronomischer Fotografien;703
29.6.3;25.6.3 Performance-Analyse und Tuning;709
29.7;25.7 Aufgaben;710
29.8;25.8 Lösungen;712
30;Kapitel 26: XML und JSON;719
30.1;26.1 Was ist XML?;719
30.2;26.2 XML-Dokumente;720
30.3;26.3 Ein XML-Dokument als Baum;722
30.4;26.4 DOM;723
30.5;26.5 Das Modul xml.dom.minidom;726
30.5.1;26.5.1 XML-Dokumente und DOM-Objekte;726
30.5.2;26.5.2 Die Basisklasse Node;728
30.5.3;26.5.3 Die Klassen Document, Element und Text;730
30.6;26.6 Attribute von XML-Elementen;732
30.7;26.7 Anwendungsbeispiel 1: Eine XML-basierte Klasse;732
30.8;26.8 Anwendungsbeispiel 2: Datenkommunikation mit XML;735
30.8.1;26.8.1 Überblick;736
30.8.2;26.8.2 Das Client-Programm;737
30.8.3;26.8.3 Das Server-Programm;740
30.9;26.9 JSON;744
30.9.1;26.9.1 JSON-Texte decodieren;745
30.9.2;26.9.2 Decodierungsfehler;746
30.9.3;26.9.3 Ein Dictionary als JSON-Objekt speichern: Kompakt oder gut lesbar?;746
30.9.4;26.9.4 Projekt: Verarbeitung von Wetterdaten;749
30.10;26.10 Aufgaben;752
30.11;26.11 Lösungen;753
31;Kapitel 27: Modellieren mit Kellern, Schlangen und Graphen;755
31.1;27.1 Stack (Keller, Stapel);755
31.2;27.2 Queue (Schlange);758
31.3;27.3 Graphen;759
31.4;27.4 Aufgaben;769
31.5;27.5 Lösungen;771
32;Kapitel 28: Benutzungsoberflächen mit Qt;775
32.1;28.1 Was bietet PyQT5?;775
32.1.1;28.1.1 PyQt5 erkunden;776
32.2;28.2 Wie arbeitet PyQt? Applikation und Fenster;776
32.3;28.3 Eine objektorientierte Anwendung mit PyQt5;777
32.4;28.4 Ein Webbrowser;778
32.5;28.5 Interaktive Widgets;781
32.6;28.6 Label – Ausgabe von Text und Bild;783
32.7;28.7 Signale;784
32.8;28.8 Checkboxen und Radiobuttons;785
32.9;28.9 Auswahlliste (ComboBox);788
32.10;28.10 Gemeinsame Operationen der Widgets;790
32.11;28.11 Spezielle Methoden eines Fensters;791
32.12;28.12 Events;793
32.13;28.13 Fonts;794
32.14;28.14 Stylesheets;796
32.15;28.15 Icons;799
32.16;28.16 Messageboxen;799
32.17;28.17 Timer;800
32.18;28.18 Das Qt-Layout unter der Lupe;802
32.18.1;28.18.1 Absolute Positionierung und Größe;803
32.18.2;28.18.2 Raster-Layout;804
32.18.3;28.18.3 Form-Layout;805
32.19;28.19 Browser für jeden Zweck;807
32.19.1;28.19.1 Die Klasse QWebEngineView;808
32.20;28.20 Ein Webbrowser mit Filter;808
32.21;28.21 Surfen mit Geschichte – der Verlauf einer Sitzung;810
32.22;28.22 Aufgaben;812
32.23;28.23 Lösungen;813
33;Kapitel 29: Multimediaanwendungen mit Qt;819
33.1;29.1 Kalender und Textfeld – ein digitales Tagebuch;819
33.1.1;29.1.1 Programmierung;820
33.2;29.2 Kamerabilder;825
33.3;29.3 Dialoge;827
33.3.1;29.3.1 Projekt Ansichtskarte;829
33.4;29.4 Videoplayer;833
33.4.1;29.4.1 Ein einfacher Videoplayer;833
33.4.2;29.4.2 Videoplayer mit Playlist;837
33.4.3;29.4.3 Regeln zur Änderung der Größe (Size Policy);840
33.4.4;29.4.4 Das Dashboard bei Mausbewegungen einblenden;841
33.5;29.5 Aufgaben;844
33.6;29.6 Lösungen;848
34;Kapitel 30: Rechnen mit NumPy;857
34.1;30.1 NumPy installieren;857
34.2;30.2 Arrays erzeugen;857
34.2.1;30.2.1 Arrays;858
34.2.2;30.2.2 Matrizen und Vektoren;860
34.2.3;30.2.3 Zahlenfolgen;860
34.2.4;30.2.4 Zufallsarrays;861
34.2.5;30.2.5 Spezielle Arrays;862
34.3;30.3 Indizieren;863
34.4;30.4 Slicing;864
34.5;30.5 Arrays verändern;865
34.6;30.6 Arithmetische Operationen;867
34.7;30.7 Funktionen, die elementweise ausgeführt werden;868
34.8;30.8 Einfache Visualisierung;869
34.9;30.9 Matrizenmultiplikation mit dot();870
34.10;30.10 Array-Funktionen und Achsen;871
34.11;30.11 Projekt: Diffusion;873
34.12;30.12 Vergleiche;876
34.13;30.13 Projekt: Wolken am Himmel;876
34.14;30.14 Projekt: Wie versteckt man ein Buch in einem Bild?;879
34.15;30.15 Datenanalyse mit Histogrammen;882
34.16;30.16 Wie funktioniert ein Medianfilter?;885
34.17;30.17 Rechnen mit SciPy;888
34.17.1;30.17.1 Lineare Gleichungssysteme lösen;888
34.17.2;30.17.2 Integration;890
34.18;30.18 Aufgaben;891
34.19;30.19 Lösungen;894
35;Kapitel 31: Messdaten verarbeiten;899
35.1;31.1 Messwerte in einem Diagramm darstellen – Matplotlib und tkinter;899
35.1.1;31.1.1 Basisprojekt;899
35.1.2;31.1.2 Erweiterung: Den letzten Wert löschen;903
35.1.3;31.1.3 Das Aussehen eines Diagramms gestalten;905
35.2;31.2 Messwerte aus einem Multimeter lesen und darstellen;908
35.2.1;31.2.1 Vorbereitung;908
35.2.2;31.2.2 Werte auslesen;909
35.2.3;31.2.3 Welche Ziffern zeigt das Display des Multimeters?;912
35.3;31.3 Anzeige der Temperatur;916
35.4;31.4 Messreihen aufzeichnen;918
35.5;31.5 Aufgabe;921
35.6;31.6 Lösung;921
36;Kapitel 32: Parallele Datenverarbeitung;925
36.1;32.1 Was sind parallele Programme?;925
36.2;32.2 Prozesse starten und abbrechen;926
36.3;32.3 Funktionen in eigenen Prozessen starten;927
36.4;32.4 Prozesse zusammenführen – join();929
36.5;32.5 Wie können Prozesse Objekte austauschen?;929
36.5.1;32.5.1 Objekte als Argumente übergeben;929
36.5.2;32.5.2 Objekte über eine Pipe senden und empfangen;930
36.5.3;32.5.3 Objekte über eine Queue austauschen;931
36.6;32.6 Daten im Pool bearbeiten;932
36.6.1;32.6.1 Mit dem Pool geht’s schneller – ein Zeitexperiment;933
36.6.2;32.6.2 Forschen mit Big Data aus dem Internet;934
36.7;32.7 Synchronisation;937
36.8;32.8 Produzenten und Konsumenten;940
36.8.1;32.8.1 Sprücheklopfer;940
36.9;32.9 Aufgaben;942
36.10;32.10 Lösungen;943
37;Anhang A: Anhang;947
37.1;A.1 Zeichencodierung;947
37.1.1;A.1.1 Codierung von Sonderzeichen in HTML;947
37.2;A.2 Quellen im WWW;947
37.3;A.3 Standardfunktionen und Standardklassen;948
37.4;A.4 Mathematische Funktionen;950
37.4.1;A.4.1 Das Modul math;950
37.4.2;A.4.2 Das Modul random;951
38;Anhang B: Glossar;953
39;Anhang C: Download der Programmbeispiele;40
40;Anhang D: Ein Python-Modul veröffentlichen: PyPI;967
40.1;D.1 Bei PyPI und TestPyPI registrieren;968
40.2;D.2 Ein Paket für die Veröffentlichung vorbereiten;969
40.2.1;D.2.1 Die Programmdatei setup.py;969
40.2.2;D.2.2 Die Lizenz;970
40.2.3;D.2.3 Die Datei README.txt;971
40.2.4;D.2.4 Die Datei __init__.py;972
40.3;D.3 Das Paket auf PyPI veröffentlichen;972
40.3.1;D.3.1 Das Paket aktualisieren;973
41;Stichwortverzeichnis;975




