Inhaltsverzeichnis

Alle Kapitel aufklappen
Alle Kapitel zuklappen
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 Übungsaufgabe
28
2.1.6 Variablen und Zuweisung
28
2.1.7 Übungsaufgabe
29
2.2 Erstes Programm
30
2.2.1 Hallo Welt
30
2.2.2 Eingabe eines Programms
30
2.3 Speichern und ausführen
31
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 Zuweisung, Berechnung und Ausgabe
38
3.2.2 String-Literale
39
3.2.3 Eingabe einer Zeichenkette
40
3.2.4 Eingabe einer Zahl
40
3.2.5 Spiel, Version mit Eingabe
42
3.2.6 Übungsaufgaben
42
3.2.7 Zufallszahlen
43
3.2.8 Typ ermitteln
44
3.3 Verzweigungen
45
3.3.1 Vergleichsoperatoren
45
3.3.2 Verzweigung mit »if«
47
3.3.3 Spiel, Version mit Bewertung der Eingabe
48
3.3.4 Übungsaufgabe
49
3.3.5 Mehrfache Verzweigung
49
3.3.6 Übungsaufgabe
50
3.3.7 Bedingter Ausdruck
51
3.3.8 Logische Operatoren
52
3.3.9 Übungsaufgaben
53
3.3.10 Mehrere Vergleichsoperatoren
55
3.3.11 Spiel, Version mit genauer Bewertung der Eingabe
55
3.3.12 Verzweigung mit »match«
56
3.3.13 Rangfolge der Operatoren
59
3.4 Schleifen
59
3.4.1 Schleife mit »for«
60
3.4.2 Schleifenabbruch mit »break«
62
3.4.3 Schleifenfortsetzung mit »continue«
62
3.4.4 Geschachtelte Kontrollstrukturen
63
3.4.5 Spiel, Version mit »for«-Schleife und Abbruch
64
3.4.6 Schleife mit »for« und »range()«
65
3.4.7 Übungsaufgaben
68
3.4.8 Spiel, Version mit »range()«
68
3.4.9 Schleife mit »while«
70
3.4.10 Spiel, Version mit »while«-Schleife und Zähler
71
3.4.11 Übungsaufgabe
72
3.4.12 Kombinierte Zuweisungsausdrücke
72
3.5 Entwicklung eines Programms
73
3.6 Fehler und Ausnahmen
74
3.6.1 Basisprogramm
74
3.6.2 Fehler abfangen
75
3.6.3 Fehlermeldung ausgeben
76
3.6.4 Eingabe wiederholen
76
3.6.5 Übungsaufgabe
77
3.6.6 Spiel, Version mit Ausnahmebehandlung
77
3.7 Funktionen und Module
79
3.7.1 Einfache Funktionen
80
3.7.2 Funktionen mit einem Parameter
81
3.7.3 Übungsaufgabe
82
3.7.4 Funktionen mit mehreren Parametern
82
3.7.5 Funktionen mit Rückgabewert
83
3.7.6 Spiel, Version mit Funktionen
84
3.7.7 Übungsaufgaben
85
3.8 Typhinweise
86
3.8.1 Variablen und Typprüfungen
86
3.8.2 Funktionen und Typprüfungen
88
3.9 Das fertige Spiel
90
4 Datentypen
95
4.1 Zahlen
95
4.1.1 Ganze Zahlen
95
4.1.2 Zahlen mit Nachkommastellen
97
4.1.3 Exponentialoperator **
98
4.1.4 Rundung und Konvertierung
98
4.1.5 Winkelfunktionen
100
4.1.6 Weitere mathematische Funktionen
101
4.1.7 Genauere Zahlen mit Nachkommastellen
103
4.1.8 Komplexe Zahlen
106
4.1.9 Bitoperatoren
108
4.1.10 Brüche
110
4.2 Zeichenketten
114
4.2.1 Eigenschaften
114
4.2.2 Operatoren
116
4.2.3 Slices
117
4.2.4 Änderbarkeit
119
4.2.5 Suchen und Ersetzen
119
4.2.6 Leerzeichen entfernen
121
4.2.7 Text zerlegen
122
4.2.8 Konstanten
123
4.2.9 Datentyp »bytes«
123
4.3 Listen
125
4.3.1 Eigenschaften und Operatoren
125
4.3.2 Mehrdimensionale Listen
126
4.3.3 Änderbarkeit
128
4.3.4 Methoden
129
4.3.5 List Comprehension
131
4.4 Tupel
133
4.5 Dictionarys
134
4.5.1 Eigenschaften, Operatoren und Methoden
135
4.5.2 Dynamische Views
137
4.6 Sets, Mengen
138
4.6.1 Eigenschaften, Operatoren und Methoden
138
4.6.2 Mengenlehre
140
4.7 Wahrheitswerte und Nichts
141
4.7.1 Wahrheitswerte »True« und »False«
142
4.7.2 Nichts, »None«
143
4.8 Referenz, Identität und Kopie
144
4.8.1 Referenz und Identität
144
4.8.2 Ressourcen sparen
146
4.8.3 Objekte kopieren
147
4.9 Typhinweise
148
4.9.1 Sequenz als Parameter
149
4.9.2 Einschränkung auf Liste
149
5 Weiterführende Programmierung
151
5.1 Allgemeines
151
5.1.1 Kombinierte Zuweisungsoperatoren
151
5.1.2 Anweisung in mehreren Zeilen
153
5.1.3 Eingabe mit Hilfestellung
154
5.1.4 Anweisung »pass«
154
5.2 Ausgabe und Formatierung
155
5.2.1 Funktion »print()«
156
5.2.2 Formatierung von Zahlen mit Nachkommastellen
157
5.2.3 Formatierung von ganzen Zahlen
159
5.2.4 Formatierung von Zeichenketten
159
5.2.5 Übungsaufgabe
160
5.3 Funktionen für Iterables
161
5.3.1 Funktion »zip()«
161
5.3.2 Funktion »map()«
162
5.3.3 Funktion »filter()«
163
5.4 Verschlüsselung
164
5.5 Fehler und Ausnahmen
166
5.5.1 Allgemeines
167
5.5.2 Syntaxfehler
167
5.5.3 Laufzeitfehler
168
5.5.4 Logische Fehler und Debugging
168
5.5.5 Fehler erzeugen
172
5.5.6 Unterscheidung von Ausnahmen
173
5.6 Funktionen
174
5.6.1 Variable Anzahl von Parametern
175
5.6.2 Benannte Parameter
175
5.6.3 Optionale Parameter
176
5.6.4 Mehrere Rückgabewerte
177
5.6.5 Übergabe von Kopien und Referenzen
178
5.6.6 Namensräume
180
5.6.7 Rekursive Funktionen
181
5.6.8 Lambda-Funktionen
182
5.6.9 Funktion als Parameter
183
5.7 Eingebaute Funktionen
184
5.7.1 Funktionen »max()«, »min()« und »sum()«
186
5.7.2 Funktionen »chr()« und »ord()«
186
5.7.3 Funktionen »reversed()« und »sorted()«
187
5.8 Weitere mathematische Module
188
5.8.1 Funktionsgraphen zeichnen
188
5.8.2 Mehrere Teilzeichnungen
191
5.8.3 Eindimensionale Arrays und Vektoren
192
5.8.4 Mehrdimensionale Arrays und Matrizen
194
5.8.5 Signalverarbeitung
197
5.8.6 Statistikfunktionen
199
5.9 Eigene Module
202
5.9.1 Eigene Module erzeugen
202
5.9.2 Standardimport eines Moduls
202
5.9.3 Import eines Moduls mit Umbenennung
203
5.9.4 Import von Funktionen
203
5.9.5 Übungsaufgabe
204
5.10 Parameter der Kommandozeile
204
5.11 Programm »Bruchtraining«
205
5.11.1 Der Ablauf des Programms
205
5.11.2 Hauptprogramm
206
5.11.3 Eine leichte Aufgabe
207
5.11.4 Eine mittelschwere Aufgabe
208
5.11.5 Eine schwere Aufgabe
210
6 Objektorientierte Programmierung
213
6.1 Grundlagen
213
6.1.1 Was ist OOP?
213
6.1.2 Klassen, Objekte und eigene Methoden
214
6.1.3 Besondere Member
216
6.1.4 Übungsaufgabe
218
6.1.5 Operatormethoden
219
6.1.6 Referenz, Identität und Kopie
222
6.1.7 Verkettung
224
6.1.8 Verschachtelung
225
6.1.9 Übungsaufgaben
227
6.2 Fortgeschrittene Themen
228
6.2.1 Vererbung
228
6.2.2 Übungsaufgabe
231
6.2.3 Mehrfachvererbung
231
6.2.4 Datenklassen
233
6.2.5 Enumerationen
235
6.2.6 Spiel, objektorientierte Version
237
7 Verschiedene Module
241
7.1 Datum und Uhrzeit
241
7.1.1 Modul »time«
241
7.1.2 Programm anhalten
243
7.1.3 Klasse »timedelta«
244
7.1.4 Klasse »datetime«
246
7.1.5 Klasse »calendar«
248
7.1.6 Spiel, Version mit Zeitmessung
251
7.1.7 Spiel, objektorientierte Version mit Zeitmessung
253
7.2 Warteschlangen
254
7.2.1 Klasse »SimpleQueue«
254
7.2.2 Klasse »LifoQueue«
255
7.2.3 Klasse »PriorityQueue«
256
7.2.4 Klasse »deque«
257
7.3 Multithreading
260
7.3.1 Wozu dient Multithreading?
260
7.3.2 Erzeugung eines Threads
260
7.3.3 Identifizierung eines Threads
261
7.3.4 Gemeinsame Daten und Objekte
263
7.3.5 Threads und Exceptions
264
7.4 Reguläre Ausdrücke
266
7.4.1 Suchen von Teiltexten
266
7.4.2 Ersetzen von Teiltexten
269
7.5 Audioausgabe
270
8 Dateien
273
8.1 Das Öffnen und das Schließen einer Datei
273
8.2 Textdateien
274
8.2.1 Schreiben einer Textdatei
275
8.2.2 Lesen einer Textdatei
277
8.2.3 CSV-Datei schreiben
279
8.2.4 CSV-Datei lesen
281
8.3 Dateien mit festgelegter Struktur
282
8.3.1 Formatiertes Schreiben
283
8.3.2 Lesen an beliebiger Stelle
284
8.3.3 Schreiben an beliebiger Stelle
285
8.4 Serialisierung mit »pickle«
286
8.4.1 Objekte in Datei schreiben
287
8.4.2 Objekte aus Datei lesen
288
8.5 Datenaustausch mit JSON
289
8.5.1 Objekte in Datei schreiben
290
8.5.2 Objekte aus Datei lesen
291
8.6 Bearbeitung mehrerer Dateien
292
8.6.1 Funktion »glob.glob()«
292
8.6.2 Funktion »os.scandir()«
293
8.7 Informationen über Dateien
294
8.8 Dateien und Verzeichnisse verwalten
295
8.9 Beispielprojekt Morsezeichen
296
8.9.1 Morsezeichen aus Datei lesen
297
8.9.2 Ausgabe auf dem Bildschirm
298
8.9.3 Ausgabe mit Tonsignalen
299
8.10 Spiel, Version mit Highscore-Datei
300
8.10.1 Eingabebeispiel
301
8.10.2 Aufbau des Programms
301
8.10.3 Code des Programms
302
8.11 Spiel, objektorientierte Version mit Highscore-Datei
305
9 Datenbanken
311
9.1 Aufbau von Datenbanken
311
9.2 SQLite
312
9.2.1 Datenbank, Tabelle und Datensätze
313
9.2.2 Daten anzeigen
315
9.2.3 Daten auswählen, Operatoren
316
9.2.4 Operator »LIKE«
318
9.2.5 Sortierung der Ausgabe
319
9.2.6 Auswahl nach Eingabe
321
9.2.7 Datensätze ändern
322
9.2.8 Datensätze löschen
324
9.2.9 Übungsaufgabe
325
9.3 MySQL
327
9.3.1 XAMPP und Connector/Python
327
9.3.2 Datenbank, Tabelle und Datensätze
328
9.3.3 Daten anzeigen
330
9.4 Spiel, Version mit Highscore-Datenbank
331
9.5 Spiel, objektorientierte Version mit Highscore-Datenbank
333
10 Benutzeroberflächen
337
10.1 Einführung
337
10.1.1 Erstes GUI-Programm
337
10.1.2 Einrichtung und Anordnung
340
10.1.3 Ereignismethoden für mehrere Widgets
342
10.2 Widget-Typen
343
10.2.1 Einzeiliges Eingabefeld
343
10.2.2 Versteckte Eingabe, Widget deaktivieren
345
10.2.3 Mehrzeiliges Eingabefeld
347
10.2.4 Listbox mit einfacher Auswahl
350
10.2.5 Listbox mit mehrfacher Auswahl
353
10.2.6 Spinbox
354
10.2.7 Radiobutton, Widget-Variable
357
10.2.8 Checkbutton
359
10.2.9 Schieberegler, Scale
361
10.3 Bilder und Mausereignisse
363
10.3.1 Bild einbetten und ändern
363
10.3.2 Mausereignisse
367
10.4 Geometrie-Manager »place«
369
10.4.1 Fenstergröße und absolute Position
370
10.4.2 Relative Position
371
10.4.3 Position ändern
373
10.5 Menüs und Dialogfelder
375
10.5.1 Menüleisten
375
10.5.2 Kontextmenüs
379
10.5.3 Standard-Dialogfelder
381
10.5.4 Eigene Dialogfelder
384
10.6 Zeichnungen und Animationen
386
10.6.1 Verschiedene Zeichnungsobjekte
386
10.6.2 Zeichnungsobjekte steuern
388
10.6.3 Zeichnungsobjekte animieren
390
10.6.4 Kollision von Zeichnungsobjekten
392
10.7 Spiel, GUI-Version
393
10.8 Übungsaufgabe
399
11 Benutzeroberflächen mit PyQt
403
11.1 Einführung
403
11.1.1 Erstes GUI-Programm
404
11.1.2 Einrichtung und Anordnung
405
11.1.3 Größe des Anwendungsfensters
407
11.1.4 Ereignismethoden für mehrere Widgets
407
11.2 Widget-Typen
409
11.2.1 Einzeiliges Eingabefeld
409
11.2.2 Versteckte Eingabe, Deaktivieren von Widgets
411
11.2.3 Mehrzeiliges Eingabefeld
413
11.2.4 Liste mit einfacher Auswahl
416
11.2.5 Liste mit mehrfacher Auswahl
418
11.2.6 Combobox
420
11.2.7 Spinbox
423
11.2.8 Radiobutton
426
11.2.9 Mehrere Gruppen von Radiobuttons
428
11.2.10 Checkbox
431
11.2.11 Slider
433
11.2.12 Bilder, Formate und Hyperlinks
435
11.2.13 Standard-Dialogfelder
437
11.3 PyQt und SQLite
442
11.3.1 Die Oberfläche der Anwendung
442
11.3.2 Widgets der linken Spalte
443
11.3.3 Widgets der mittleren Spalte
444
11.3.4 Widgets der rechten Spalte
445
11.3.5 Ein List-Widget und eine Python-Liste
446
11.3.6 Datenbankdatei und Fenster
446
11.3.7 Drei Hilfsmethoden
448
11.3.8 Anzeige im List-Widget
449
11.3.9 Auswahl in List-Widget
450
11.3.10 Einfügen eines neuen Datensatzes
451
11.3.11 Ändern eines Datensatzes
452
11.3.12 Löschen eines Datensatzes
453
11.3.13 Suchen nach einem Namen
454
11.3.14 Hauptprogramm
455
11.4 Übungsaufgabe
456
Anhang
457
A.1 Installation zusätzlicher Module
457
A.2 Erstellen von ausführbaren Dateien
458
A.3 Installation von XAMPP
459
A.4 UNIX-Befehle
460
A.5 Tipps zur Entwicklung
463
Index
467