Weigend | Python 3 | E-Book | sack.de
E-Book

E-Book, Deutsch, 1066 Seiten

Reihe: mitp Professional

Weigend Python 3

Lernen und professionell anwenden. Das umfassende Praxisbuch
1. Auflage 2022
ISBN: 978-3-7475-0545-8
Verlag: mitp Verlags GmbH & Co.KG
Format: PDF
Kopierschutz: 1 - PDF Watermark

Lernen und professionell anwenden. Das umfassende Praxisbuch

E-Book, Deutsch, 1066 Seiten

Reihe: mitp Professional

ISBN: 978-3-7475-0545-8
Verlag: mitp Verlags GmbH & Co.KG
Format: PDF
Kopierschutz: 1 - PDF Watermark



Einführung in alle Sprachgrundlagen: Klassen, Objekte, Vererbung, Kollektionen, DictionariesBenutzungsoberflächen und Multimediaanwendungen mit PyQt, Datenbanken, XML, Internet-Programmierung mit CGI, WSGI und DjangoWissenschaftliches Rechnen mit NumPy, parallele Verarbeitung großer Datenmengen, Datenvisualisierung mit MatplotlibÜbungen mit Musterlösungen zu jedem KapitelDie Skriptsprache Python ist mit ihrer einfachen Syntax hervorragend für Einsteiger geeignet, um modernes Programmieren zu lernen. Mit diesem Buch erhalten Sie einen umfassenden Einstieg in Python 3 und lernen darüber hinaus auch weiterführende Anwendungsmöglichkeiten kennen. Michael Weigend behandelt Python von Grund auf und erläutert die wesentlichen Sprachelemente. Er geht dabei besonders auf die Anwendung von Konzepten der objektorientierten Programmierung ein.Insgesamt liegt der Schwerpunkt auf der praktischen Arbeit mit Python. Ziel ist es, die wesentlichen Techniken und dahinterstehenden Ideen anhand zahlreicher anschaulicher Beispiele verständlich zu machen. Zu typischen Problemstellungen werden Schritt für Schritt Lösungen erarbeitet. So erlernen Sie praxisorientiert die Programmentwicklung mit Python und die Anwendung von Konzepten der objektorientierten Programmierung.Alle Kapitel enden mit einfachen und komplexen Übungsaufgaben mit vollständigen Musterlösungen.Der Autor wendet sich sowohl an Einsteiger als auch an Leser, die bereits mit einer höheren Programmiersprache vertraut sind.Aus dem Inhalt:Datentypen, Kontroll-strukturen, Funktionen, GeneratorenModellieren mit Sequenzen, Dictionaries und MengenKlassen, Objekte, Vererbung, PolymorphieModule nutzen und auf PyPI veröffentlichenZeichenketten und reguläre AusdrückeDatenmodellierung, Datenbanken, XML und JSONGrafische Benutzungsoberflächen mit tkinter und PyQtThreads und Events, Bildverarbeitung mit PILSystemfunktionen, Testen und Performance-AnalyseCGI, WSGI und Rapid Web-Development mit Django Wissenschaftliche Projekte mit NumPyDatenvisualisierung mit Matplotlib und MesswerterfassungParallele Programmierung: Pipes, Queues, Pools
Weigend Python 3 jetzt bestellen!

Zielgruppe


Programmierer


Autoren/Hrsg.


Weitere Infos & Material


1;Cover;1
2;Titel;5
3;Impressum;6
4;Inhalt;7
5;Einleitung;25
6;Kapitel 1: Grundlagen;29
6.1;1.1 Was ist Programmieren?;29
6.2;1.2 Hardware und Software;30
6.3;1.3 Programm als Algorithmus;31
6.4;1.4 Syntax und Semantik;32
6.5;1.5 Interpreter und Compiler;32
6.6;1.6 Programmierparadigmen;34
6.7;1.7 Objektorientierte Programmierung;35
6.7.1;1.7.1 Strukturelle Zerlegung;35
6.7.2;1.7.2 Die Welt als System von Objekten;36
6.7.3;1.7.3 Objekte besitzen Attribute und beherrschen Methoden;37
6.7.4;1.7.4 Objekte sind Instanzen von Klassen;38
6.8;1.8 Hintergrund: Geschichte der objektorientierten Programmierung;38
6.9;1.9 Aufgaben;39
6.10;1.10 Lösungen;40
7;Kapitel 2: Der Einstieg – Python im interaktiven Modus;41
7.1;2.1 Python installieren;41
7.2;2.2 Python im interaktiven Modus;44
7.2.1;2.2.1 Start des Python-Interpreters in einem Konsolenfenster;44
7.2.2;2.2.2 Die IDLE-Shell;45
7.2.3;2.2.3 Die ersten Python-Befehle ausprobieren;45
7.2.4;2.2.4 Hotkeys;46
7.3;2.3 Objekte;47
7.4;2.4 Namen;49
7.5;2.5 Hintergrund: Syntax-Regeln für Bezeichner;49
7.6;2.6 Schlüsselwörter;50
7.7;2.7 Anweisungen;51
7.7.1;2.7.1 Ausdruckanweisungen;52
7.7.2;2.7.2 Import-Anweisungen;56
7.7.3;2.7.3 Zuweisungen;57
7.7.4;2.7.4 Erweiterte Zuweisungen;61
7.7.5;2.7.5 Hintergrund: Dynamische Typisierung;61
7.8;2.8 Aufgaben;62
7.9;2.9 Lösungen;64
8;Kapitel 3: Python-Skripte;67
8.1;3.1 Ausprobieren, nachmachen, besser machen!;67
8.2;3.2 Skripte editieren und ausführen mit IDLE;67
8.3;3.3 Ausführen eines Python-Skripts;69
8.4;3.4 Kommentare;71
8.5;3.5 Die Zeilenstruktur von Python-Programmen;72
8.6;3.6 Das EVA-Prinzip;75
8.7;3.7 Phasen der Programmentwicklung;77
8.8;3.8 Guter Programmierstil;78
8.9;3.9 Hintergrund: Die Kunst des Fehlerfindens;80
8.10;3.10 Weitere Entwicklungsumgebungen für Python;82
8.10.1;3.10.1 Thonny – eine Entwicklungsumgebung für Python-Einsteiger;82
8.10.2;3.10.2 Python in der Cloud;83
8.10.3;3.10.3 Jupyter Notebook und Google Colab;84
8.10.4;3.10.4 Entwicklungsumgebungen für Profis;84
8.11;3.11 Aufgaben;85
8.12;3.12 Lösungen;86
9;Kapitel 4: Standard-Datentypen;89
9.1;4.1 Daten als Objekte;89
9.2;4.2 Fundamentale Datentypen im Überblick;91
9.3;4.3 Typen und Klassen;92
9.4;4.4 NoneType;93
9.5;4.5 Wahrheitswerte – der Datentyp bool;93
9.6;4.6 Ganze Zahlen;94
9.7;4.7 Gleitkommazahlen;96
9.8;4.8 Komplexe Zahlen;97
9.9;4.9 Arithmetische Operatoren für Zahlen;98
9.10;4.10 Sequenzen;103
9.10.1;4.10.1 Zeichenketten (Strings);104
9.10.2;4.10.2 Bytestrings;106
9.10.3;4.10.3 Tupel;107
9.10.4;4.10.4 Liste;108
9.10.5;4.10.5 Bytearray;109
9.10.6;4.10.6 Einige Grundoperationen für Sequenzen;109
9.10.7;4.10.7 Veränderbare und unveränderbare Sequenzen;111
9.11;4.11 Mengen;112
9.12;4.12 Dictionaries;113
9.13;4.13 Typumwandlungen;113
9.13.1;4.13.1 int();115
9.13.2;4.13.2 float();115
9.13.3;4.13.3 complex();116
9.13.4;4.13.4 bool();116
9.13.5;4.13.5 str();116
9.13.6;4.13.6 dict(), list() und tuple();117
9.14;4.14 Aufgaben;117
9.15;4.15 Lösungen;120
10;Kapitel 5: Kontrollstrukturen;125
10.1;5.1 Einfache Bedingungen;125
10.1.1;5.1.1 Vergleiche;125
10.1.2;5.1.2 Zugehörigkeit zu einer Menge (in, not in);129
10.1.3;5.1.3 Beliebige Ausdrücke als Bedingungen;129
10.2;5.2 Zusammengesetzte Bedingungen – logische Operatoren;130
10.2.1;5.2.1 Negation (not);130
10.2.2;5.2.2 Konjunktion (and);131
10.2.3;5.2.3 Disjunktion (or);132
10.2.4;5.2.4 Formalisierung von Bedingungen;133
10.2.5;5.2.5 Hinweis zum Programmierstil;134
10.3;5.3 Programmverzweigungen (bedingte Anweisungen);134
10.3.1;5.3.1 Einseitige Verzweigung (if);135
10.3.2;5.3.2 Zweiseitige Verzweigung (if-else);135
10.3.3;5.3.3 Mehrfache Fallunterscheidung (elif);136
10.3.4;5.3.4 Bedingte Ausdrücke;138
10.4;5.4 Bedingte Wiederholung (while);138
10.4.1;5.4.1 Endlosschleifen;139
10.5;5.5 Iteration über eine Kollektion (for);141
10.5.1;5.5.1 Zählschleifen – Verwendung von range();142
10.5.2;5.5.2 Verschachtelte Iterationen;143
10.5.3;5.5.3 Vertiefung: Iterative Berechnung rekursiver Folgen;145
10.6;5.6 Abbruch einer Schleife mit break;145
10.6.1;5.6.1 Abbruch eines Schleifendurchlaufs mit continue;146
10.7;5.7 Abfangen von Ausnahmen mit try;147
10.7.1;5.7.1 try...except;148
10.8;5.8 Aufgaben;150
10.9;5.9 Lösungen;154
11;Kapitel 6: Funktionen;159
11.1;6.1 Aufruf von Funktionen;159
11.2;6.2 Definition von Funktionen;162
11.3;6.3 Schrittweise Verfeinerung;164
11.4;6.4 Ausführung von Funktionen;168
11.4.1;6.4.1 Globale und lokale Namen;168
11.4.2;6.4.2 Seiteneffekte – die global-Anweisung;171
11.4.3;6.4.3 Parameterübergabe;172
11.5;6.5 Voreingestellte Parameterwerte;174
11.5.1;6.5.1 Schlüsselwort-Argumente;176
11.6;6.6 Funktionen mit beliebiger Anzahl von Parametern;178
11.7;6.7 Lokale Funktionen;179
11.8;6.8 Rekursive Funktionen;180
11.9;6.9 Experimente zur Rekursion mit der Turtle-Grafik;182
11.9.1;6.9.1 Turtle-Befehle im interaktiven Modus;182
11.9.2;6.9.2 Eine rekursive Spirale;183
11.9.3;6.9.3 Baumstrukturen;185
11.9.4;6.9.4 Künstlicher Blumenkohl – selbstähnliche Bilder;186
11.10;6.10 Rekursive Zahlenfunktionen;188
11.11;6.11 Hintergrund: Wie werden rekursive Funktionen ausgeführt?;189
11.11.1;6.11.1 Execution Frames;189
11.11.2;6.11.2 Rekursionstiefe;190
11.12;6.12 Funktionen als Objekte;192
11.12.1;6.12.1 Hintergrund: Typen sind keine Funktionen;193
11.13;6.13 Lambda-Formen;193
11.14;6.14 Funktionsannotationen: Typen zuordnen;194
11.15;6.15 Hinweise zum Programmierstil;195
11.15.1;6.15.1 Allgemeines;195
11.15.2;6.15.2 Funktionsnamen;195
11.15.3;6.15.3 Kommentierte Parameter;196
11.15.4;6.15.4 Docstrings;196
11.16;6.16 Aufgaben;198
11.17;6.17 Lösungen;201
12;Kapitel 7: Sequenzen, Mengen und Generatoren;205
12.1;7.1 Gemeinsame Operationen für Sequenzen;205
12.1.1;7.1.1 Zugriff auf Elemente einer Sequenz;206
12.1.2;7.1.2 Slicing von Sequenzen;207
12.1.3;7.1.3 Auspacken (unpacking);208
12.2;7.2 Vertiefung: Rekursive Funktionen für Sequenzen;209
12.2.1;7.2.1 Rekursives Summieren;209
12.2.2;7.2.2 Rekursive Suche;209
12.3;7.3 Tupel;211
12.4;7.4 Listen;212
12.4.1;7.4.1 Eine Liste erzeugen;212
12.4.2;7.4.2 Eine Liste verändern;215
12.4.3;7.4.3 Flache und tiefe Kopien;217
12.4.4;7.4.4 Listen sortieren;218
12.4.5;7.4.5 Binäre Suche in einer sortierten Liste;220
12.4.6;7.4.6 Zwei Sortierverfahren im Vergleich;221
12.4.7;7.4.7 Modellieren mit Listen – Beispiel: die Charts;225
12.5;7.5 Generatoren;229
12.5.1;7.5.1 Generatorausdrücke;230
12.5.2;7.5.2 Generatorfunktionen;230
12.5.3;7.5.3 Iteratoren;232
12.5.4;7.5.4 Verwendung von Generatoren;233
12.6;7.6 Mengen;233
12.6.1;7.6.1 Operationen für Mengen;235
12.6.2;7.6.2 Modellieren mit Mengen – Beispiel: Graphen;236
12.7;7.7 Aufgaben;239
12.8;7.8 Lösungen;241
13;Kapitel 8: Dictionaries;243
13.1;8.1 Operationen für Dictionaries;243
13.2;8.2 Wie erstellt man ein Dictionary?;244
13.2.1;8.2.1 Definition mit einem Dictionary-Display;244
13.2.2;8.2.2 Schrittweiser Aufbau eines Dictionarys;246
13.2.3;8.2.3 Ein Dictionary aus anderen Dictionaries zusammensetzen – update();247
13.3;8.3 Zugriff auf Daten in einem Dictionary;247
13.3.1;8.3.1 Vergebliche Zugriffsversuche;247
13.4;8.4 Praxisbeispiel: Vokabeltrainer;248
13.5;8.5 Typische Fehler;250
13.6;8.6 Aufgaben;250
13.7;8.7 Lösungen;253
14;Kapitel 9: Ein- und Ausgabe;257
14.1;9.1 Streams;257
14.1.1;9.1.1 Die Rolle der Streams bei E/A-Operationen;257
14.1.2;9.1.2 Was ist ein Stream?;258
14.1.3;9.1.3 Eine Datei öffnen;259
14.1.4;9.1.4 Speichern einer Zeichenkette;260
14.1.5;9.1.5 Laden einer Zeichenkette aus einer Datei;262
14.1.6;9.1.6 Absolute und relative Pfade;262
14.1.7;9.1.7 Zwischenspeichern, ohne zu schließen;264
14.1.8;9.1.8 Zugriff auf Streams (lesen und schreiben);265
14.2;9.2 Mehr Zuverlässigkeit durch try- und with-Anweisungen;267
14.2.1;9.2.1 try...finally;268
14.2.2;9.2.2 with-Anweisungen;269
14.3;9.3 Objekte speichern mit pickle;270
14.3.1;9.3.1 Funktionen zum Speichern und Laden;270
14.4;9.4 Die Streams sys.stdin und sys.stdout;272
14.5;9.5 Ausgabe von Werten mit der print()-Funktion;273
14.5.1;9.5.1 Anwendung: Ausgabe von Tabellen;274
14.6;9.6 Kommandozeilen-Argumente (Optionen);275
14.6.1;9.6.1 Zugriff auf Optionen;276
14.6.2;9.6.2 Beispiel;276
14.6.3;9.6.3 Skripte mit Optionen testen;277
14.7;9.7 Aufgaben;277
14.8;9.8 Lösungen;280
15;Kapitel 10: Definition eigener Klassen;285
15.1;10.1 Klassen und Objekte;285
15.2;10.2 Definition von Klassen;287
15.3;10.3 Objekte (Instanzen);289
15.4;10.4 Zugriff auf Attribute – Sichtbarkeit;292
15.4.1;10.4.1 Öffentliche Attribute;292
15.4.2;10.4.2 Private Attribute;293
15.4.3;10.4.3 Properties;295
15.4.4;10.4.4 Dynamische Erzeugung von Attributen;297
15.5;10.5 Methoden;297
15.5.1;10.5.1 Polymorphismus – überladen von Operatoren;298
15.5.2;10.5.2 Vertiefung: Objekte ausführbar machen – die Methode __call__();301
15.5.3;10.5.3 Statische Methoden;302
15.6;10.6 Abstraktion, Verkapselung und Geheimnisprinzip;304
15.6.1;10.6.1 Abstraktion;304
15.6.2;10.6.2 Verkapselung;304
15.6.3;10.6.3 Geheimnisprinzip;304
15.7;10.7 Vererbung;305
15.7.1;10.7.1 Spezialisierungen;305
15.7.2;10.7.2 Beispiel: Die Klasse Konto – eine Spezialisierung der Klasse Geld;306
15.7.3;10.7.3 Vertiefung: Standardklassen als Basisklassen;309
15.8;10.8 Hinweise zum Programmierstil;311
15.8.1;10.8.1 Schreibweise;311
15.8.2;10.8.2 Sichtbarkeit;311
15.8.3;10.8.3 Dokumentation von Klassen;312
15.9;10.9 Typische Fehler;313
15.9.1;10.9.1 Versehentliches Erzeugen neuer Attribute;313
15.9.2;10.9.2 Verwechseln von Methoden und Attributen;313
15.10;10.10 Aufgaben;314
15.11;10.11 Lösungen;317
16;Kapitel 11: Klassen wiederverwenden – Module;323
16.1;11.1 Testen einer Klasse in einem lauffähigen Stand-alone- Skript;323
16.2;11.2 Module speichern und importieren;325
16.3;11.3 Den Zugang zu einem Modul sicherstellen;327
16.3.1;11.3.1 Erweitern der Verzeichnisliste sys.path;327
16.3.2;11.3.2 Anwendungsbeispiel: Eine interaktive Testumgebung;327
16.3.3;11.3.3 Kompilieren von Modulen;328
16.4;11.4 Programmierstil: Verwendung und Dokumentation von Modulen;329
17;Kapitel 12: Objektorientiertes Modellieren;331
17.1;12.1 Phasen einer objektorientierten Software-Entwicklung;331
17.1.1;12.1.1 Objektorientierte Analyse (OOA);331
17.1.2;12.1.2 Objektorientierter Entwurf (OOD);332
17.1.3;12.1.3 Objektorientierte Programmierung (OOP);332
17.2;12.2 Beispiel: Modell eines Wörterbuchs;332
17.2.1;12.2.1 OOA: Entwicklung einer Klassenstruktur;332
17.2.2;12.2.2 OOD: Entwurf einer Klassenstruktur zur Implementierung in Python;336
17.2.3;12.2.3 OOP: Implementierung der Klassenstruktur;338
17.3;12.3 Assoziationen zwischen Klassen;342
17.3.1;12.3.1 Reflexive Assoziationen;342
17.3.2;12.3.2 Aggregation;344
17.4;12.4 Beispiel: Management eines Musicals;345
17.4.1;12.4.1 OOA;345
17.4.2;12.4.2 OOD;347
17.4.3;12.4.3 OOP;347
17.5;12.5 Aufgaben;357
17.6;12.6 Lösungen;358
18;Kapitel 13: Textverarbeitung;363
18.1;13.1 Standardmethoden zur Verarbeitung von Zeichenketten;363
18.1.1;13.1.1 Formatieren;364
18.1.2;13.1.2 Schreibweise;364
18.1.3;13.1.3 Tests;365
18.1.4;13.1.4 Entfernen und Aufspalten;366
18.1.5;13.1.5 Suchen und Ersetzen;367
18.2;13.2 Codierung und Decodierung;367
18.2.1;13.2.1 Platonische Zeichen und Unicode;367
18.2.2;13.2.2 Vertiefung: Zeichenketten durch Bytefolgen darstellen;369
18.3;13.3 Automatische Textproduktion;371
18.3.1;13.3.1 Texte mit variablen Teilen – Anwendung der String-Methode format();371
18.3.2;13.3.2 Vertiefung: Eine Tabelle erstellen;374
18.3.3;13.3.3 Mahnbriefe;375
18.3.4;13.3.4 Textuelle Repräsentation eines Objekts;376
18.3.5;13.3.5 F-Strings;378
18.4;13.4 Analyse von Texten;379
18.4.1;13.4.1 Chat-Bots;379
18.4.2;13.4.2 Textanalyse mit einfachen Vorkommenstests;380
18.5;13.5 Reguläre Ausdrücke;382
18.5.1;13.5.1 Die Funktion findall() aus dem Modul re;383
18.5.2;13.5.2 Aufbau eines regulären Ausdrucks;383
18.5.3;13.5.3 Objekte für reguläre Ausdrücke;386
18.5.4;13.5.4 Strings untersuchen mit search();387
18.5.5;13.5.5 Textpassagen extrahieren mit findall();388
18.5.6;13.5.6 Zeichenketten zerlegen mit split();389
18.5.7;13.5.7 Teilstrings ersetzen mit sub();390
18.5.8;13.5.8 Match-Objekte;391
18.6;13.6 Den Computer zum Sprechen bringen – Sprachsynthese;393
18.6.1;13.6.1 Buchstabieren;395
18.6.2;13.6.2 Den Klang der Stimme verändern;397
18.7;13.7 Aufgaben;400
18.8;13.8 Lösungen;403
19;Kapitel 14: Systemfunktionen;411
19.1;14.1 Das Modul sys – die Schnittstelle zum Laufzeitsystem;411
19.1.1;14.1.1 Informationen über die aktuelle Systemumgebung;412
19.1.2;14.1.2 Standardeingabe und -ausgabe;413
19.1.3;14.1.3 Die Objektverwaltung beobachten mit getrefcount();414
19.1.4;14.1.4 Ausführung eines Skripts beenden;415
19.2;14.2 Das Modul os – die Schnittstelle zum Betriebssystem;415
19.2.1;14.2.1 Dateien und Verzeichnisse suchen;416
19.2.2;14.2.2 Hintergrund: Zugriffsrechte abfragen und ändern (Windows und Unix);417
19.2.3;14.2.3 Dateien und Verzeichnisse anlegen und modifizieren;419
19.2.4;14.2.4 Merkmale von Dateien und Verzeichnissen abfragen;420
19.2.5;14.2.5 Pfade verarbeiten;421
19.2.6;14.2.6 Hintergrund: Umgebungsvariablen;423
19.2.7;14.2.7 Systematisches Durchlaufen eines Verzeichnisbaumes;424
19.3;14.3 Datum und Zeit;426
19.3.1;14.3.1 Funktionen des Moduls time;427
19.3.2;14.3.2 Sekundenformat;427
19.3.3;14.3.3 Zeit-Tupel;428
19.3.4;14.3.4 Zeitstrings;429
19.3.5;14.3.5 Einen Prozess unterbrechen mit sleep();430
19.4;14.4 Zeitberechnungen mit dem Modul datetime;430
19.4.1;14.4.1 Die Klasse datetime;430
19.4.2;14.4.2 Die Zeitzone;432
19.4.3;14.4.3 Die Klasse timedelta;433
19.5;14.5 Aufgaben;433
19.6;14.6 Lösungen;434
20;Kapitel 15: Grafische Benutzungsoberflächen mit tkinter;439
20.1;15.1 Ein einführendes Beispiel;440
20.2;15.2 Einfache Widgets;443
20.3;15.3 Die Master-Slave-Hierarchie;444
20.4;15.4 Optionen der Widgets;445
20.4.1;15.4.1 Optionen bei der Instanziierung setzen;445
20.4.2;15.4.2 Widget-Optionen nachträglich konfigurieren;446
20.4.3;15.4.3 Fonts;447
20.4.4;15.4.4 Farben;448
20.4.5;15.4.5 Rahmen;448
20.4.6;15.4.6 Die Größe eines Widgets;449
20.4.7;15.4.7 Leerraum um Text;451
20.5;15.5 Gemeinsame Methoden der Widgets;452
20.6;15.6 Die Klasse Tk;452
20.7;15.7 Die Klasse Button;453
20.8;15.8 Die Klasse Label;453
20.8.1;15.8.1 Dynamische Konfiguration der Beschriftung;454
20.8.2;15.8.2 Verwendung von Kontrollvariablen;455
20.9;15.9 Die Klasse Entry;457
20.10;15.10 Die Klasse Radiobutton;459
20.11;15.11 Die Klasse Checkbutton;461
20.12;15.12 Die Klasse Scale;463
20.13;15.13 Die Klasse Frame;465
20.14;15.14 Aufgaben;465
20.15;15.15 Lösungen;466
21;Kapitel 16: Layout;471
21.1;16.1 Der Packer;471
21.2;16.2 Layout-Fehler;473
21.3;16.3 Raster-Layout;474
21.4;16.4 Vorgehensweise bei der GUI-Entwicklung;478
21.4.1;16.4.1 Die Benutzungsoberfläche gestalten;481
21.4.2;16.4.2 Funktionalität hinzufügen;484
21.5;16.5 Aufgaben;485
21.6;16.6 Lösungen;488
22;Kapitel 17: Grafik;499
22.1;17.1 Die tkinter-Klasse Canvas;499
22.1.1;17.1.1 Generierung grafischer Elemente – ID, Positionierung und Display-Liste;500
22.1.2;17.1.2 Grafische Elemente gestalten;502
22.1.3;17.1.3 Visualisieren mit Kreisdiagrammen;504
22.2;17.2 Die Klasse PhotoImage;507
22.2.1;17.2.1 Eine Pixelgrafik erzeugen;508
22.2.2;17.2.2 Fotos analysieren und verändern;510
22.3;17.3 Bilder in eine Benutzungsoberfläche einbinden;513
22.3.1;17.3.1 Icons auf Schaltflächen;513
22.3.2;17.3.2 Hintergrundbilder;514
22.3.3;17.3.3 Hintergrund: Das PPM-Format;516
22.4;17.4 Die Python Imaging Library (PIL);517
22.4.1;17.4.1 Installation eines Moduls mit pip;517
22.4.2;17.4.2 Mit PIL beliebige Bilddateien einbinden;518
22.4.3;17.4.3 Steganografie – Informationen in Bildern verstecken;519
22.5;17.5 Aufgaben;521
22.6;17.6 Lösungen;522
23;Kapitel 18: Event-Verarbeitung;527
23.1;18.1 Einführendes Beispiel;528
23.2;18.2 Event-Sequenzen;530
23.2.1;18.2.1 Event-Typen;530
23.2.2;18.2.2 Qualifizierer für Maus- und Tastatur-Events;530
23.2.3;18.2.3 Modifizierer;532
23.3;18.3 Beispiel: Tastaturereignisse verarbeiten;532
23.4;18.4 Programmierung eines Eventhandlers;534
23.4.1;18.4.1 Beispiel für eine Event-Auswertung;535
23.5;18.5 Bindemethoden;536
23.6;18.6 Aufgaben;536
23.7;18.7 Lösungen;539
24;Kapitel 19: Komplexe Benutzungsoberflächen;545
24.1;19.1 Text-Widgets;545
24.1.1;19.1.1 Methoden der Text-Widgets;546
24.2;19.2 Rollbalken (Scrollbars);548
24.3;19.3 Menüs;549
24.3.1;19.3.1 Die Klasse Menu;550
24.3.2;19.3.2 Methoden der Klasse Menu;550
24.4;19.4 Texteditor mit Menüleiste und Pulldown-Menü;552
24.5;19.5 Dialogboxen;554
24.6;19.6 Applikationen mit mehreren Fenstern;558
24.7;19.7 Aufgaben;561
24.8;19.8 Lösungen;562
25;Kapitel 20: Threads;567
25.1;20.1 Funktionen in einem Thread ausführen;568
25.2;20.2 Thread-Objekte erzeugen – die Klasse Thread;570
25.3;20.3 Aufgaben;573
25.4;20.4 Lösungen;574
26;Kapitel 21: Fehler finden und vermeiden;579
26.1;21.1 Testen von Bedingungen;579
26.1.1;21.1.1 Ausnahmen (Exceptions);579
26.1.2;21.1.2 Testen von Vor- und Nachbedingungen mit assert;580
26.1.3;21.1.3 Vertiefung: Programmabstürze ohne Fehlermeldung;583
26.2;21.2 Debugging-Modus und optimierter Modus;585
26.3;21.3 Ausnahmen gezielt auslösen;586
26.4;21.4 Selbstdokumentation;587
26.5;21.5 Dokumentation eines Programmlaufs mit Log-Dateien;589
26.5.1;21.5.1 Grundfunktionen;589
26.5.2;21.5.2 Beispiel: Logging in der GUI-Programmierung;590
26.6;21.6 Vertiefung: Professionelles Arbeiten mit Logging;591
26.6.1;21.6.1 Logging-Levels;591
26.6.2;21.6.2 Logger-Objekte;596
26.6.3;21.6.3 Das Format der Logging-Meldungen konfigurieren;596
26.7;21.7 Debugging;598
26.7.1;21.7.1 Schaltflächen des Debug-Control-Fensters;599
26.7.2;21.7.2 Breakpoints;599
27;Kapitel 22: Dynamische Webseiten – CGI und WSGI;601
27.1;22.1 Wie funktionieren dynamische Webseiten?;601
27.2;22.2 Wie spät ist es? Aufbau eines CGI-Skripts;603
27.2.1;22.2.1 Die Ausgabe eines CGI-Skripts;603
27.2.2;22.2.2 Wie ist ein CGI-Skript aufgebaut?;604
27.2.3;22.2.3 Verwendung von Schablonen;605
27.2.4;22.2.4 Aufruf mit dem Webbrowser;606
27.2.5;22.2.5 Ein einfacher HTTP-Server;607
27.3;22.3 Kommunikation über interaktive Webseiten;607
27.3.1;22.3.1 Aufbau eines HTML-Formulars;608
27.3.2;22.3.2 Eingabekomponenten in einem HTML-Formular;610
27.4;22.4 Verarbeitung von Eingabedaten mit FieldStorage;612
27.5;22.5 Sonderzeichen handhaben;614
27.6;22.6 CGI-Skripte debuggen;615
27.7;22.7 Der Apache-Webserver;616
27.7.1;22.7.1 Den Apache-Server installieren;617
27.7.2;22.7.2 CGI-Skripte auf dem Apache-Server;618
27.8;22.8 Dynamische Webseiten mit WSGI;618
27.8.1;22.8.1 Einfacher geht’s nicht: Ein Stand-alone-WSGI-Webserver mit wsgiref;619
27.9;22.9 mod_wsgi;620
27.9.1;22.9.1 Installation;620
27.9.2;22.9.2 Vorbereitung;621
27.9.3;22.9.3 Den Apache-Server konfigurieren;621
27.9.4;22.9.4 Ein WSGI-Skript für den Apache-Server;623
27.9.5;22.9.5 Tipps zum Debuggen;623
27.9.6;22.9.6 Zugriff von einem entfernten Rechner im WLAN;624
27.10;22.10 Verarbeitung von Eingabedaten aus Formularen;625
27.11;22.11 Objektorientierte WSGI-Skripte – Beispiel: ein Chatroom;627
27.11.1;22.11.1 Die HTML-Seiten;629
27.11.2;22.11.2 Die Klassen für den Chatroom;631
27.11.3;22.11.3 Skript (Teil 2):;631
27.12;22.12 WSGI-Skripte mit Cookies;634
27.12.1;22.12.1 Besuche zählen;635
28;Kapitel 23: Internet-Programmierung;643
28.1;23.1 Was ist ein Protokoll?;643
28.2;23.2 Übertragung von Dateien mit FTP;644
28.2.1;23.2.1 Das Modul ftplib;644
28.2.2;23.2.2 Navigieren und Downloaden;645
28.2.3;23.2.3 Ein Suchroboter für FTP-Server;647
28.3;23.3 Zugriff auf Webseiten mit HTTP und HTTPS;651
28.3.1;23.3.1 Automatische Auswertung von Webseiten;653
28.4;23.4 Zugriff auf Ressourcen im Internet über deren URL;655
28.4.1;23.4.1 Webseite herunterladen und verarbeiten;655
28.4.2;23.4.2 Projekt: Wie warm wird es heute?;656
28.4.3;23.4.3 Datei herunterladen und speichern;657
28.4.4;23.4.4 Projekt: Filme herunterladen;657
28.5;23.5 E-Mails senden mit SMTP;659
28.6;23.6 Aufgaben;662
28.7;23.7 Lösungen;663
29;Kapitel 24: Datenbanken;671
29.1;24.1 Was ist ein Datenbanksystem?;671
29.2;24.2 Entity-Relationship-Diagramme (ER-Diagramme);672
29.3;24.3 Relationale Datenbanken;673
29.4;24.4 Darstellung von Relationen als Mengen oder Dictionaries;674
29.5;24.5 Das Modul sqlite3;675
29.5.1;24.5.1 Beispiel: Telefonbuch;675
29.5.2;24.5.2 Eine Tabelle anlegen;676
29.5.3;24.5.3 Anfragen an eine Datenbank;677
29.5.4;24.5.4 Datensuche im interaktiven Modus;678
29.5.5;24.5.5 SQL-Anweisungen mit variablen Teilen;680
29.5.6;24.5.6 Vertiefung: SQL-Injection;682
29.6;24.6 Online-Redaktionssystem mit Datenbankanbindung;683
29.6.1;24.6.1 Objektorientierte Analyse (OOA);685
29.6.2;24.6.2 Objektorientierter Entwurf des Systems (OOD);686
29.6.3;24.6.3 Hintergrund: Authentifizieren mit SHA-256;688
29.6.4;24.6.4 Implementierung des Redaktionssystems mit Python (OOP);689
29.7;24.7 Aufgaben;699
29.8;24.8 Lösungen;700
30;Kapitel 25: Testen und Tuning;703
30.1;25.1 Automatisiertes Testen;703
30.2;25.2 Testen mit Docstrings – das Modul doctest;703
30.3;25.3 Praxisbeispiel: Suche nach dem Wort des Jahres;706
30.4;25.4 Klassen testen mit doctest;713
30.4.1;25.4.1 Wie testet man eine Klasse?;713
30.4.2;25.4.2 Normalisierte Whitespaces – doctest-Direktiven;714
30.4.3;25.4.3 Ellipsen verwenden;714
30.4.4;25.4.4 Dictionaries testen;715
30.5;25.5 Gestaltung von Testreihen mit unittest;715
30.5.1;25.5.1 Einführendes Beispiel mit einem Testfall;716
30.5.2;25.5.2 Klassen des Moduls unittest;717
30.5.3;25.5.3 Weiterführendes Beispiel;720
30.6;25.6 Tuning;723
30.6.1;25.6.1 Performance-Analyse mit dem Profiler;723
30.6.2;25.6.2 Praxisbeispiel: Auswertung astronomischer Fotografien;725
30.6.3;25.6.3 Performance-Analyse und Tuning;731
30.7;25.7 Aufgaben;732
30.8;25.8 Lösungen;734
31;Kapitel 26: XML und JSON;741
31.1;26.1 Was ist XML?;741
31.2;26.2 XML-Dokumente;742
31.3;26.3 Ein XML-Dokument als Baum;744
31.4;26.4 DOM;745
31.5;26.5 Das Modul xml.dom.minidom;748
31.5.1;26.5.1 XML-Dokumente und DOM-Objekte;748
31.5.2;26.5.2 Die Basisklasse Node;750
31.5.3;26.5.3 Die Klassen Document, Element und Text;752
31.6;26.6 Attribute von XML-Elementen;754
31.7;26.7 Anwendungsbeispiel 1: Eine XML-basierte Klasse;754
31.8;26.8 Anwendungsbeispiel 2: Datenkommunikation mit XML;757
31.8.1;26.8.1 Überblick;758
31.8.2;26.8.2 Das Client-Programm;759
31.8.3;26.8.3 Das Server-Programm;762
31.9;26.9 JSON;766
31.9.1;26.9.1 JSON-Texte decodieren;767
31.9.2;26.9.2 Decodierungsfehler;768
31.9.3;26.9.3 Ein Dictionary als JSON-Objekt speichern: Kompakt oder gut lesbar?;768
31.9.4;26.9.4 Projekt: Verarbeitung von Wetterdaten;771
31.10;26.10 Aufgaben;774
31.11;26.11 Lösungen;775
32;Kapitel 27: Modellieren mit Kellern, Schlangen und Graphen;777
32.1;27.1 Stack (Keller, Stapel);777
32.2;27.2 Queue (Schlange);780
32.3;27.3 Graphen;781
32.4;27.4 Aufgaben;791
32.5;27.5 Lösungen;793
33;Kapitel 28: Benutzungsoberflächen mit Qt;797
33.1;28.1 Was bietet PyQt5?;797
33.2;28.2 PyQt5 erkunden;798
33.3;28.3 Wie arbeitet PyQt? Applikation und Fenster;798
33.4;28.4 Eine objektorientierte Anwendung mit PyQt5;799
33.5;28.5 Ein Webbrowser;800
33.6;28.6 Interaktive Widgets;804
33.7;28.7 Label – Ausgabe von Text und Bild;805
33.8;28.8 Signale;806
33.9;28.9 Checkboxen und Radiobuttons;807
33.10;28.10 Auswahlliste (ComboBox);810
33.11;28.11 Gemeinsame Operationen der Widgets;812
33.12;28.12 Spezielle Methoden eines Fensters;813
33.13;28.13 Events;815
33.14;28.14 Fonts;816
33.15;28.15 Stylesheets;818
33.16;28.16 Icons;821
33.17;28.17 Messageboxen;821
33.18;28.18 Timer;822
33.19;28.19 Das Qt-Layout unter der Lupe;824
33.19.1;28.19.1 Absolute Positionierung und Größe;824
33.19.2;28.19.2 Raster-Layout;826
33.19.3;28.19.3 Form-Layout;827
33.20;28.20 Browser für jeden Zweck;829
33.20.1;28.20.1 Die Klasse QWebEngineView;829
33.21;28.21 Ein Webbrowser mit Filter;830
33.22;28.22 Surfen mit Geschichte – der Verlauf einer Sitzung;832
33.23;28.23 Aufgaben;834
33.24;28.24 Lösungen;835
34;Kapitel 29: Multimediaanwendungen mit Qt;839
34.1;29.1 Kalender und Textfeld – ein digitales Tagebuch;839
34.1.1;29.1.1 Programmierung;840
34.2;29.2 Kamerabilder;845
34.3;29.3 Dialoge;847
34.3.1;29.3.1 Projekt: Ansichtskarte;849
34.4;29.4 Videoplayer;853
34.4.1;29.4.1 Ein einfacher Videoplayer;853
34.4.2;29.4.2 Videoplayer mit Playlist;857
34.4.3;29.4.3 Regeln zur Änderung der Größe (Size Policy);860
34.4.4;29.4.4 Das Dashboard bei Mausbewegungen einblenden;861
34.5;29.5 Aufgaben;864
34.6;29.6 Lösungen;869
35;Kapitel 30: Rechnen mit NumPy;877
35.1;30.1 NumPy installieren;877
35.2;30.2 Arrays erzeugen;877
35.2.1;30.2.1 Arrays;877
35.2.2;30.2.2 Matrizen und Vektoren;880
35.2.3;30.2.3 Zahlenfolgen;880
35.2.4;30.2.4 Zufallsarrays;881
35.2.5;30.2.5 Spezielle Arrays;882
35.3;30.3 Indizieren;883
35.4;30.4 Slicing;884
35.5;30.5 Arrays verändern;885
35.6;30.6 Arithmetische Operationen;887
35.7;30.7 Funktionen, die elementweise ausgeführt werden;888
35.8;30.8 Einfache Visualisierung;889
35.9;30.9 Matrizenmultiplikation mit dot();890
35.10;30.10 Array-Funktionen und Achsen;891
35.11;30.11 Projekt: Diffusion;893
35.12;30.12 Vergleiche;896
35.13;30.13 Projekt: Wolken am Himmel;896
35.14;30.14 Projekt: Wie versteckt man ein Buch in einem Bild?;899
35.15;30.15 Datenanalyse mit Histogrammen;902
35.16;30.16 Wie funktioniert ein Medianfilter?;905
35.17;30.17 Rechnen mit SciPy;908
35.17.1;30.17.1 Lineare Gleichungssysteme lösen;908
35.17.2;30.17.2 Integration;910
35.18;30.18 Aufgaben;911
35.19;30.19 Lösungen;914
36;Kapitel 31: Messdaten verarbeiten;919
36.1;31.1 Messwerte in einem Diagramm darstellen – Matplotlib und tkinter;919
36.1.1;31.1.1 Basisprojekt;919
36.1.2;31.1.2 Erweiterung: Den letzten Wert löschen;923
36.1.3;31.1.3 Das Aussehen eines Diagramms gestalten;925
36.2;31.2 Messwerte aus einem Multimeter lesen und darstellen;928
36.2.1;31.2.1 Vorbereitung;928
36.2.2;31.2.2 Werte auslesen;929
36.2.3;31.2.3 Welche Ziffern zeigt das Display des Multimeters?;932
36.3;31.3 Anzeige der Temperatur;936
36.4;31.4 Messreihen aufzeichnen;938
36.5;31.5 Aufgabe;941
36.6;31.6 Lösung;941
37;Kapitel 32: Parallele Datenverarbeitung;945
37.1;32.1 Was sind parallele Programme?;945
37.2;32.2 Prozesse starten und abbrechen;946
37.3;32.3 Funktionen in eigenen Prozessen starten;947
37.4;32.4 Prozesse zusammenführen – join();949
37.5;32.5 Wie können Prozesse Objekte austauschen?;950
37.5.1;32.5.1 Objekte als Argumente übergeben;950
37.5.2;32.5.2 Objekte über eine Pipe senden und empfangen;951
37.5.3;32.5.3 Objekte über eine Queue austauschen;952
37.6;32.6 Daten im Pool bearbeiten;953
37.6.1;32.6.1 Mit dem Pool geht’s schneller – ein Zeitexperiment;953
37.6.2;32.6.2 Forschen mit Big Data aus dem Internet;955
37.7;32.7 Synchronisation;958
37.8;32.8 Produzenten und Konsumenten;960
37.8.1;32.8.1 Sprücheklopfer;961
37.9;32.9 Aufgaben;963
37.10;32.10 Lösungen;964
38;Kapitel 33: Django;969
38.1;33.1 Django aus der Vogelperspektive;969
38.2;33.2 Ein Projekt anlegen;970
38.2.1;33.2.1 Den Server starten;972
38.2.2;33.2.2 Eine neue Applikation anlegen;972
38.2.3;33.2.3 Startseite und View einrichten;973
38.3;33.3 Datenbankanbindung;976
38.4;33.4 Modelle erstellen;976
38.5;33.5 Modelle aktivieren;978
38.6;33.6 In der Python-Shell die Datenbank bearbeiten;981
38.6.1;33.6.1 Objekte durch Aufruf der Klasse erzeugen;982
38.6.2;33.6.2 Auf Attribute eines Objekts zugreifen;983
38.6.3;33.6.3 Objekte finden;983
38.6.4;33.6.4 Objekte erzeugen und Beziehungen herstellen;984
38.6.5;33.6.5 Den Beziehungsmanager nutzen;985
38.6.6;33.6.6 Objekte löschen;985
38.7;33.7 Django-Modelle unter der Lupe;986
38.7.1;33.7.1 Grenzwerte;986
38.7.2;33.7.2 Leere Felder;987
38.7.3;33.7.3 Voreingestellte Werte;987
38.7.4;33.7.4 Einmaligkeit;987
38.7.5;33.7.5 Auswahlmöglichkeiten;987
38.8;33.8 Der Manager unter der Lupe – Objekte erzeugen und suchen;988
38.8.1;33.8.1 Objekte erzeugen;988
38.8.2;33.8.2 Objekte finden;988
38.8.3;33.8.3 Mehrere Bedingungen;989
38.8.4;33.8.4 Suchen über Beziehungen;990
38.8.5;33.8.5 Weitere Suchmethoden;990
38.9;33.9 Administration;991
38.9.1;33.9.1 Eine Applikation der Website-Verwaltung zugänglich machen;993
38.10;33.10 Views einrichten – die Grundstruktur;997
38.10.1;33.10.1 Was sind Views?;997
38.10.2;33.10.2 Funktionen für Views;997
38.10.3;33.10.3 URL-Patterns;998
38.11;33.11 View-Funktionen erweitern;999
38.11.1;33.11.1 Startseite;1000
38.11.2;33.11.2 Auflistung der Ideen zu einer Frage – question_index;1003
38.11.3;33.11.3 Die Templates verbessern: Namen statt expliziter URLs;1005
38.12;33.12 Interaktive Webseiten – Views mit Formularen;1006
38.12.1;33.12.1 Eingabe einer neuen Frage;1006
38.12.2;33.12.2 Eingabe einer neuen Idee;1012
38.12.3;33.12.3 View-Funktion für das Speichern einer neuen Idee;1014
38.12.4;33.12.4 Fertig!;1015
38.13;33.13 Die nächsten Schritte;1015
38.14;33.14 Aufgabe;1016
38.15;33.15 Lösung;1017
39;A Anhang;1021
39.1;A.1 Codierung von Sonderzeichen in HTML;1021
39.2;A.2 Quellen im WWW;1021
39.3;A.3 Standardfunktionen und Standardklassen;1022
39.4;A.4 Mathematische Funktionen;1024
39.4.1;A.4.1 Das Modul math;1024
39.4.2;A.4.2 Das Modul random;1025
39.5;A.5 EBNF-Grammatik;1026
40;B Glossar;1031
41;C Download der Programmbeispiele;1045
42;D Ein Python-Modul veröffentlichen: PyPI;1047
42.1;D.1 Bei PyPI und TestPyPI registrieren;1048
42.2;D.2 Ein Paket für die Veröffentlichung vorbereiten;1049
42.2.1;D.2.1 Die Programmdatei setup.py;1049
42.2.2;D.2.2 Die Lizenz;1050
42.2.3;D.2.3 Die Datei README.txt;1051
42.2.4;D.2.4 Die Datei __init__.py;1052
42.3;D.3 Das Paket auf PyPI veröffentlichen;1052
42.3.1;D.3.1 Das Paket aktualisieren;1053
43;Stichwortverzeichnis;1055


Michael Weigend hat an der Universität Potsdam in Informatik promoviert. Er war für mehr als 30 Jahre als Lehrer tätig und hat 20 Jahre lang an der FernUniversität Hagen Seminare zur Didaktik der Informatik gegeben. An der Universität Münster hält er im Rahmen eines Lehrauftrags Vorlesungen zur Python-Programmierung. Michael Weigend engagiert sich in mehreren nationalen und internationalen Communities für den Computer-Einsatz in der Bildung, darunter Constructionism, International Federation for Information Processing (TC 3 Computers in Education) , Bebras – International Contest on Informatics and Computational Thinking. Er hat über 60 wissenschaftliche Artikel veröffentlicht und mehrere Bücher zu den Themen Programmierung, Web Development und visuelle Modellierung geschrieben.



Ihre Fragen, Wünsche oder Anmerkungen
Vorname*
Nachname*
Ihre E-Mail-Adresse*
Kundennr.
Ihre Nachricht*
Lediglich mit * gekennzeichnete Felder sind Pflichtfelder.
Wenn Sie die im Kontaktformular eingegebenen Daten durch Klick auf den nachfolgenden Button übersenden, erklären Sie sich damit einverstanden, dass wir Ihr Angaben für die Beantwortung Ihrer Anfrage verwenden. Selbstverständlich werden Ihre Daten vertraulich behandelt und nicht an Dritte weitergegeben. Sie können der Verwendung Ihrer Daten jederzeit widersprechen. Das Datenhandling bei Sack Fachmedien erklären wir Ihnen in unserer Datenschutzerklärung.