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

E-Book, Deutsch, 992 Seiten

Reihe: mitp Professional

Weigend Python 3

Lernen und professionell anwenden. Das umfassende Praxisbuch
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)



Einführung in alle Sprachgrundlagen: Klassen, Objekte, Vererbung, DictionariesBenutzungsoberflächen und Multimediaanwendungen mit PyQt, Datenbanken, XML und Internet-ProgrammierungWissenschaftliches Rechnen mit NumPy, parallele Verarbeitung großer Datenmengen, Datenvisualisierung mit MatplotlibÜbungen mit Musterlösungen zu jedem Kapitel Die 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 dahinter stehenden 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.Das Buch behandelt die Grundlagen von Python 3 (Version 3.6) und zusätzlich auch weiterführende Themen wie die Gestaltung grafischer Benutzungsoberflächen mit tkinter und PyQt, Threads und Multiprocessing, CGI- und Internet-Programmierung, automatisiertes Testen, Datenmodellierung mit XML und JSON, Datenbanken, Datenvisualisierung mit Matplotlib und wissenschaftliches Rechnen mit NumPy.Der Autor wendet sich sowohl an Einsteiger als auch an Leser, die bereits mit einer höheren Programmiersprache vertraut sind. Zugleich bietet sich dieses Lehrbuch als Textgrundlage oder nützliche Ergänzung zu Universitätskursen an.Aus dem Inhalt:Datentypen, Kontrollstrukturen, Funktionen, GeneratorenModellieren mit Sequenzen, Dictionaries und MengenKlassen, Objekte, Vererbung, PolymorphieModule nutzen und auf PyPI veröffentlichenZeichenketten und reguläre AusdrückeGrafische Benutzungs-oberflächen mit tkinter und PyQtThreads und Events, Bildverarbeitung mit PILSystemfunktionen, Testen und Performance-AnalyseXML, CGI- und Internet-Programmierung, DatenbankenWissenschaftliche Projekte mit NumPyDatenvisualisierung mit Matplotlib und MesswerterfassungParallele Programmierung: Pipes, Queues, Pools

Michael Weigend ist Informatiklehrer und hat bereits mehrere Bücher zu Python geschrieben wie z.B. Python Ge-Packt.

Weigend Python 3 jetzt bestellen!

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


Michael Weigend ist Informatiklehrer und hat bereits mehrere Bücher zu Python geschrieben wie z.B. Python Ge-Packt.



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.