Inhaltsverzeichnis

Alle Kapitel aufklappen
Alle Kapitel zuklappen
Materialien zum Buch
17
1 Einführung
19
1.1 Vorteile von Python
19
1.2 Verbreitung von Python
20
1.3 Aufbau des Buchs
20
1.4 Übungen
21
1.5 Installation unter Windows
22
1.6 Installation unter Ubuntu Linux
23
1.7 Installation unter macOS
23
2 Erste Schritte
25
2.1 Python als Taschenrechner
25
2.1.1 Eingabe von Berechnungen
25
2.1.2 Addition, Subtraktion und Multiplikation
26
2.1.3 Division, Ganzzahldivision und Modulo
26
2.1.4 Rangfolge und Klammern
27
2.1.5 Variablen und Zuweisung
28
2.2 Erstes Programm
30
2.2.1 Hallo Welt
30
2.2.2 Eingabe eines Programms
30
2.3 Speichern und Ausführen
30
2.3.1 Speichern
31
2.3.2 Ausführen unter Windows
31
2.3.3 Ausführen unter Ubuntu Linux und unter macOS
33
2.3.4 Kommentare
34
2.3.5 Verkettung von Ausgaben
34
2.3.6 Lange Ausgaben
35
3 Programmierkurs
37
3.1 Ein Spiel programmieren
37
3.2 Variablen und Operatoren
38
3.2.1 Berechnung und Zuweisung
38
3.2.2 Ausgabe mit formatiertem String-Literal
39
3.2.3 Eingabe einer Zeichenkette
39
3.2.4 Eingabe einer Zahl
40
3.2.5 Spiel, Version mit Eingabe
41
3.2.6 Zufallszahlen
42
3.3 Verzweigungen
44
3.3.1 Vergleichsoperatoren
44
3.3.2 Verzweigung mit »if«
45
3.3.3 Spiel, Version mit Bewertung der Eingabe
46
3.3.4 Mehrfache Verzweigung
47
3.3.5 Bedingter Ausdruck
49
3.3.6 Logische Operatoren
49
3.3.7 Mehrere Vergleichsoperatoren
53
3.3.8 Spiel, Version mit genauer Bewertung der Eingabe
53
3.3.9 Verzweigung mit »match«
54
3.3.10 Rangfolge der Operatoren
57
3.4 Schleifen
57
3.4.1 Schleife mit »for«
58
3.4.2 Schleifenabbruch mit »break«
60
3.4.3 Schleifenfortsetzung mit »continue«
60
3.4.4 Geschachtelte Kontrollstrukturen
61
3.4.5 Spiel, Version mit »for«-Schleife und Abbruch
62
3.4.6 Schleife mit »for« und »range()«
63
3.4.7 Spiel, Version mit »range()«
67
3.4.8 Schleife mit »while«
68
3.4.9 Spiel, Version mit »while«-Schleife und Zähler
69
3.4.10 Kombinierte Zuweisungsausdrücke
70
3.5 Entwicklung eines Programms
71
3.6 Fehler und Ausnahmen
72
3.6.1 Basisprogramm
72
3.6.2 Fehler abfangen
72
3.6.3 Eingabe wiederholen
74
3.6.4 Spiel, Version mit Ausnahmebehandlung
75
3.7 Funktionen und Module
76
3.7.1 Einfache Funktionen
77
3.7.2 Funktionen mit einem Parameter
78
3.7.3 Funktionen mit mehreren Parametern
79
3.7.4 Funktionen mit Rückgabewert
80
3.7.5 Typhinweise
81
3.7.6 Spiel, Version mit Funktionen
82
3.8 Das fertige Spiel
84
4 Datentypen
89
4.1 Zahlen
89
4.1.1 Ganze Zahlen
89
4.1.2 Zahlen mit Nachkommastellen
91
4.1.3 Typ ermitteln
92
4.1.4 Exponentialoperator **
93
4.1.5 Rundung und Konvertierung
93
4.1.6 Winkelfunktionen
94
4.1.7 Weitere mathematische Funktionen
95
4.1.8 Komplexe Zahlen
98
4.1.9 Bitoperatoren
100
4.1.10 Brüche
103
4.2 Zeichenketten
105
4.2.1 Eigenschaften
105
4.2.2 Operatoren
107
4.2.3 Slices
107
4.2.4 Änderbarkeit
109
4.2.5 Suchen und Ersetzen
110
4.2.6 Leerzeichen entfernen
112
4.2.7 Text zerlegen
112
4.2.8 Konstanten
113
4.2.9 Datentyp »bytes«
114
4.3 Listen
115
4.3.1 Eigenschaften und Operatoren
115
4.3.2 Mehrdimensionale Listen
117
4.3.3 Änderbarkeit
118
4.3.4 Methoden
119
4.3.5 List Comprehension
121
4.4 Tupel
122
4.5 Dictionarys
124
4.5.1 Eigenschaften, Operatoren und Methoden
124
4.5.2 Dynamische Views
126
4.6 Sets, Mengen
128
4.6.1 Eigenschaften, Operatoren und Methoden
128
4.6.2 Mengenlehre
130
4.7 Wahrheitswerte und Nichts
131
4.7.1 Wahrheitswerte »True« und »False«
131
4.7.2 Nichts, »None«
133
4.8 Referenz, Identität und Kopie
134
4.8.1 Referenz und Identität
134
4.8.2 Ressourcen sparen
136
4.8.3 Objekte kopieren
137
5 Weiterführende Programmierung
139
5.1 Allgemeines
139
5.1.1 Kombinierte Zuweisungsoperatoren
139
5.1.2 Anweisung in mehreren Zeilen
141
5.1.3 Eingabe mit Hilfestellung
141
5.1.4 Anweisung »pass«
142
5.1.5 Funktionen »eval()« und »exec()«
143
5.2 Ausgabe und Formatierung
145
5.2.1 Funktion »print()«
145
5.2.2 Formatierung von Zahlen mit Nachkommastellen
146
5.2.3 Formatierung von ganzen Zahlen
148
5.2.4 Formatierung von Zeichenketten
148
5.3 Funktionen für Iterables
150
5.3.1 Funktion »zip()«
150
5.3.2 Funktion »map()«
151
5.3.3 Funktion »filter()«
152
5.4 Verschlüsselung
153
5.5 Fehler und Ausnahmen
155
5.5.1 Allgemeines
155
5.5.2 Syntaxfehler
155
5.5.3 Laufzeitfehler
156
5.5.4 Logische Fehler und Debugging
157
5.5.5 Fehler erzeugen
160
5.5.6 Unterscheidung von Ausnahmen
162
5.6 Funktionen
163
5.6.1 Variable Anzahl von Parametern
163
5.6.2 Benannte Parameter
164
5.6.3 Optionale Parameter
165
5.6.4 Mehrere Rückgabewerte
166
5.6.5 Übergabe von Kopien und Referenzen
167
5.6.6 Namensräume
169
5.6.7 Rekursive Funktionen
170
5.6.8 Lambda-Funktion
171
5.6.9 Funktion als Parameter
172
5.7 Eingebaute Funktionen
173
5.7.1 Funktionen »max()«, »min()« und »sum()«
174
5.7.2 Funktionen »chr()« und »ord()«
175
5.7.3 Funktionen »reversed()« und »sorted()«
176
5.8 Weitere mathematische Module
177
5.8.1 Funktionsgraphen zeichnen
177
5.8.2 Mehrere Teilzeichnungen
180
5.8.3 Eindimensionale Arrays und Vektoren
181
5.8.4 Mehrdimensionale Arrays und Matrizen
183
5.8.5 Signalverarbeitung
186
5.8.6 Statistikfunktionen
188
5.9 Eigene Module
191
5.9.1 Eigene Module erzeugen
191
5.9.2 Standard-Import eines Moduls
191
5.9.3 Import eines Moduls mit Umbenennung
192
5.9.4 Import von Funktionen
192
5.10 Parameter der Kommandozeile
193
5.11 Programm »Bruchtraining«
194
5.11.1 Der Ablauf des Programms
194
5.11.2 Hauptprogramm
196
5.11.3 Eine leichte Aufgabe
197
5.11.4 Eine mittelschwere Aufgabe
197
5.11.5 Eine schwere Aufgabe
199
6 Objektorientierte Programmierung
201
6.1 Was ist OOP?
201
6.2 Klassen, Objekte und eigene Methoden
202
6.3 Besondere Member
204
6.4 Operatormethoden
206
6.5 Referenz, Identität und Kopie
208
6.6 Vererbung
210
6.7 Mehrfachvererbung
212
6.8 Datenklassen
214
6.9 Enumerationen
215
6.10 Spiel, objektorientierte Version
216
7 Verschiedene Module
219
7.1 Datum und Uhrzeit
219
7.1.1 Funktionen
219
7.1.2 Rechnen mit Zeitangaben
221
7.1.3 Programm anhalten
222
7.1.4 Spiel, Version mit Zeitmessung
223
7.1.5 Spiel, objektorientierte Version mit Zeitmessung
225
7.2 Warteschlangen
226
7.2.1 Klasse »SimpleQueue«
227
7.2.2 Klasse »LifoQueue«
228
7.2.3 Klasse »PriorityQueue«
228
7.2.4 Klasse »deque«
229
7.3 Multithreading
232
7.3.1 Wozu dient Multithreading?
232
7.3.2 Erzeugung eines Threads
233
7.3.3 Identifizierung eines Threads
234
7.3.4 Gemeinsame Daten und Objekte
235
7.3.5 Threads und Exceptions
236
7.4 Reguläre Ausdrücke
238
7.4.1 Suchen von Teiltexten
238
7.4.2 Ersetzen von Teiltexten
242
7.5 Audioausgabe
243
8 Dateien
245
8.1 Dateitypen
245
8.2 Öffnen und Schließen einer Datei
246
8.3 Textdateien
247
8.3.1 Schreiben einer Textdatei
247
8.3.2 Lesen einer Textdatei
249
8.3.3 CSV-Datei schreiben
252
8.3.4 CSV-Datei lesen
254
8.4 Dateien mit festgelegter Struktur
255
8.4.1 Formatiertes Schreiben
255
8.4.2 Lesen an beliebiger Stelle
256
8.4.3 Schreiben an beliebiger Stelle
258
8.5 Serialisierung mit »pickle«
259
8.5.1 Objekte in Datei schreiben
259
8.5.2 Objekte aus Datei lesen
260
8.6 Datenaustausch mit JSON
262
8.6.1 JSON-Objekte in Datei schreiben
262
8.6.2 JSON-Objekte aus Datei lesen
263
8.7 Bearbeitung mehrerer Dateien
264
8.7.1 Funktion »glob.glob()«
265
8.7.2 Funktion »os.scandir()«
266
8.8 Informationen über Dateien
267
8.9 Dateien und Verzeichnisse verwalten
268
8.10 Beispielprojekt Morsezeichen
269
8.10.1 Morsezeichen aus Datei lesen
269
8.10.2 Ausgabe auf dem Bildschirm
270
8.10.3 Ausgabe mit Tonsignalen
271
8.11 Spiel, Version mit Highscore-Datei
273
8.11.1 Eingabebeispiel
273
8.11.2 Aufbau des Programms
274
8.11.3 Code des Programms
274
8.12 Spiel, objektorientierte Version mit Highscore-Datei
278
9 Internet
283
9.1 Laden und Senden von Internetdaten
283
9.1.1 Daten lesen
284
9.1.2 Daten kopieren
286
9.1.3 Daten senden
286
9.2 Webserver-Programmierung
289
9.2.1 Erstes Programm
290
9.2.2 Beantworten einer Benutzereingabe
291
9.2.3 Formularelemente mit mehreren Werten
294
9.2.4 Typen von Formularelementen
296
9.3 Browser aufrufen
302
9.4 Spiel, Version für das Internet
302
9.4.1 Eingabebeispiel
302
9.4.2 Aufbau des Programms
304
9.4.3 Code des Programms
305
10 Datenbanken
311
10.1 Aufbau von Datenbanken
311
10.2 SQLite
312
10.2.1 Datenbank, Tabelle und Datensätze
313
10.2.2 Daten anzeigen
314
10.2.3 Daten auswählen, Operatoren
315
10.2.4 Operator »LIKE«
318
10.2.5 Sortierung der Ausgabe
319
10.2.6 Auswahl nach Eingabe
320
10.2.7 Datensätze ändern
321
10.2.8 Datensätze löschen
323
10.3 SQLite auf dem Webserver
324
10.4 MySQL
326
10.4.1 XAMPP und Connector/Python
326
10.4.2 Datenbank, Tabelle und Datensätze
327
10.4.3 Daten anzeigen
329
10.5 Spiel, Version mit Highscore-Datenbank
330
10.6 Spiel, objektorientierte Version mit Highscore-Datenbank
333
11 Benutzeroberflächen
335
11.1 Einführung
335
11.1.1 Erstes GUI-Programm
335
11.1.2 Anordnung von Widgets
338
11.2 Widget-Typen
340
11.2.1 Einzeiliges Eingabefeld
340
11.2.2 Versteckte Eingabe, Widget deaktivieren
342
11.2.3 Mehrzeiliges Eingabefeld
344
11.2.4 Listbox mit einfacher Auswahl
347
11.2.5 Listbox mit mehrfacher Auswahl
349
11.2.6 Spinbox
351
11.2.7 Radiobutton, Widget-Variable
354
11.2.8 Checkbutton
357
11.2.9 Schieberegler, Scale
359
11.3 Bilder und Mausereignisse
360
11.3.1 Bild einbetten und ändern
361
11.3.2 Mausereignisse
364
11.4 Geometrie-Manager »place«
367
11.4.1 Fenstergröße und absolute Position
367
11.4.2 Relative Position
368
11.4.3 Position ändern
371
11.5 Menüs, Messageboxen und Dialogfelder
372
11.5.1 Menüleisten
372
11.5.2 Kontextmenüs
376
11.5.3 Messageboxen
378
11.5.4 Eigene Dialogfelder
382
11.6 Zeichnungen und Animationen
384
11.6.1 Verschiedene Zeichnungsobjekte
384
11.6.2 Zeichnungsobjekte steuern
386
11.6.3 Zeichnungsobjekte animieren
388
11.6.4 Kollision von Zeichnungsobjekten
389
11.7 Spiel, GUI-Version
391
12 Benutzeroberflächen mit PyQt
397
12.1 Ein erstes Programm
397
12.2 Layout und Größe eines Anwendungsfensters
399
12.2.1 Grid-Layout
399
12.2.2 Größe des Anwendungsfensters
401
12.3 Widget-Typen
401
12.3.1 Einzeiliges Eingabefeld
401
12.3.2 Versteckte Eingabe, Deaktivieren von Widgets
403
12.3.3 Mehrzeiliges Eingabefeld
405
12.3.4 Liste mit einfacher Auswahl
408
12.3.5 Liste mit mehrfacher Auswahl
411
12.3.6 Combobox
413
12.3.7 Spinbox
415
12.3.8 Radiobutton
418
12.3.9 Mehrere Gruppen von Radiobuttons
421
12.3.10 Checkbox
423
12.3.11 Slider
426
12.3.12 Bilder, Formate und Hyperlinks
428
1 Anhang A
431
A.1 Paketverwaltungsprogramm »pip«
431
A.2 Erstellen von EXE-Dateien
431
A.3 Installation von XAMPP
432
A.4 UNIX-Befehle
434
Index
439