Inhaltsverzeichnis

Alle Kapitel aufklappen
Alle Kapitel zuklappen
1 Einführung
17
1.1 Vorteile von Python
17
1.2 Verbreitung von Python
18
1.3 Aufbau des Buchs
18
1.4 Übungen
20
1.5 Installation von Python unter Windows
20
1.6 Installation von Python unter Ubuntu Linux
21
1.7 Installation von Python unter macOS
21
2 Erste Schritte
23
2.1 Python als Taschenrechner
23
2.1.1 Eingabe von Berechnungen
23
2.1.2 Addition, Subtraktion und Multiplikation
24
2.1.3 Division, Ganzzahldivision und Modulo
24
2.1.4 Rangfolge und Klammern
25
2.1.5 Variablen und Zuweisung
26
2.2 Erstes Programm
27
2.2.1 Hallo Welt
28
2.2.2 Eingabe eines Programms
28
2.3 Speichern und Ausführen
28
2.3.1 Speichern
29
2.3.2 Ausführen unter Windows
29
2.3.3 Ausführen unter Ubuntu Linux und unter macOS
31
2.3.4 Kommentare
32
2.3.5 Verkettung von Ausgaben
32
2.3.6 Lange Ausgaben
33
3 Programmierkurs
35
3.1 Ein Spiel programmieren
35
3.1.1 Der Ablauf des Spiels
35
3.2 Variablen und Operatoren
36
3.2.1 Berechnung und Zuweisung
36
3.2.2 Eingabe einer Zeichenkette
37
3.2.3 Eingabe einer Zahl
37
3.2.4 Spiel, Version mit Eingabe
38
3.2.5 Zufallszahlen
40
3.3 Verzweigungen
41
3.3.1 Vergleichsoperatoren
41
3.3.2 Einfache Verzweigung
42
3.3.3 Spiel, Version mit Bewertung der Eingabe
43
3.3.4 Mehrfache Verzweigung
44
3.3.5 Logische Operatoren
46
3.3.6 Mehrere Vergleichsoperatoren
48
3.3.7 Spiel, Version mit genauer Bewertung der Eingabe
49
3.3.8 Rangfolge der Operatoren
50
3.4 Schleifen
51
3.4.1 for-Schleife
51
3.4.2 Schleifenabbruch mit »break«
52
3.4.3 Geschachtelte Kontrollstrukturen
53
3.4.4 Spiel, Version mit for-Schleife und Abbruch
54
3.4.5 for-Schleife mit »range()«
55
3.4.6 Spiel, Version mit »range()«
59
3.4.7 while-Schleife
60
3.4.8 Spiel, Version mit while-Schleife und Zähler
61
3.5 Entwicklung eines Programms
63
3.6 Fehler und Ausnahmen
64
3.6.1 Basisprogramm
64
3.6.2 Fehler abfangen
65
3.6.3 Eingabe wiederholen
67
3.6.4 Exkurs: Schleifenfortsetzung mit »continue«
68
3.6.5 Spiel, Version mit Ausnahmebehandlung
69
3.7 Funktionen und Module
71
3.7.1 Einfache Funktionen
72
3.7.2 Funktionen mit einem Parameter
73
3.7.3 Funktionen mit mehreren Parametern
75
3.7.4 Funktionen mit Rückgabewert
75
3.7.5 Spiel, Version mit Funktionen
76
3.8 Das fertige Spiel
78
4 Datentypen
83
4.1 Zahlen
83
4.1.1 Ganze Zahlen
83
4.1.2 Zahlen mit Nachkommastellen
85
4.1.3 Typ ermitteln
86
4.1.4 Operator **
87
4.1.5 Rundung und Konvertierung
87
4.1.6 Winkelfunktionen
89
4.1.7 Weitere mathematische Funktionen
90
4.1.8 Bitoperatoren
91
4.1.9 Brüche
94
4.2 Zeichenketten
97
4.2.1 Eigenschaften
97
4.2.2 Operatoren
98
4.2.3 Operationen
100
4.2.4 Funktionen
102
4.2.5 Umwandlung einer Zeichenkette in eine Zahl
106
4.2.6 Umwandlung einer Zahl in eine Zeichenkette
108
4.2.7 Datentyp »bytes«
108
4.3 Listen
109
4.3.1 Eigenschaften
110
4.3.2 Operatoren
112
4.3.3 Funktionen und Operationen
112
4.4 Tupel
116
4.4.1 Eigenschaften
116
4.4.2 Operationen
116
4.4.3 Tupel entpacken
118
4.5 Dictionarys
120
4.5.1 Eigenschaften
120
4.5.2 Operatoren und Funktionen
122
4.5.3 Views
123
4.5.4 Vergleiche
125
4.6 Mengen, Sets
126
4.6.1 Eigenschaften
126
4.6.2 Funktionen
127
4.6.3 Operatoren
128
4.6.4 Frozenset
130
4.7 Wahrheitswerte und Nichts
131
4.7.1 Wahrheitswerte True und False
132
4.7.2 Nichts, None
135
4.8 Referenz, Identität und Kopie
137
4.8.1 Referenz und Identität
137
4.8.2 Ressourcen sparen
139
4.8.3 Objekte kopieren
140
5 Weiterführende Programmierung
143
5.1 Allgemeines
143
5.1.1 Kombinierte Zuweisungsoperatoren
143
5.1.2 Programmzeile in mehreren Zeilen
145
5.1.3 Eingabe mit Hilfestellung
146
5.1.4 Anweisung »pass«
147
5.1.5 Funktionen »eval()« und »exec()«
149
5.2 Ausgabe und Formatierung
150
5.2.1 Funktion »print()«
150
5.2.2 Formatierung mit String-Literalen
152
5.2.3 Formatierung mit »format()«
156
5.2.4 Formatierung wie in C
158
5.3 Conditional Expression
159
5.4 Iterierbare Objekte
160
5.4.1 Funktion »zip()«
161
5.4.2 Funktion »map()«
161
5.4.3 Funktion »filter()«
164
5.5 List Comprehension
164
5.6 Fehler und Ausnahmen
167
5.6.1 Allgemeines
167
5.6.2 Syntaxfehler
167
5.6.3 Laufzeitfehler
169
5.6.4 Logische Fehler und Debugging
169
5.6.5 Fehler erzeugen
174
5.6.6 Unterscheidung von Ausnahmen
175
5.7 Funktionen
177
5.7.1 Variable Anzahl von Parametern
177
5.7.2 Benannte Parameter
178
5.7.3 Voreinstellung von Parametern
179
5.7.4 Mehrere Rückgabewerte
181
5.7.5 Übergabe von Kopien und Referenzen
182
5.7.6 Lokal, global
185
5.7.7 Rekursive Funktionen
186
5.7.8 Lambda-Funktion
187
5.7.9 Funktionsname als Parameter
188
5.8 Eingebaute Funktionen
189
5.8.1 Funktionen »max()«, »min()« und »sum()«
191
5.8.2 Funktionen »chr()« und »ord()«
192
5.8.3 Funktionen »reversed()« und »sorted()«
193
5.9 Statistikfunktionen
194
5.10 Eigene Module
196
5.10.1 Eigene Module erzeugen
197
5.10.2 Eigene Module verwenden
197
5.11 Parameter der Kommandozeile
199
5.11.1 Übergabe von Zeichenketten
199
5.11.2 Übergabe von Zahlen
199
5.11.3 Beliebige Anzahl von Parametern
200
6 Objektorientierte Programmierung
203
6.1 Was ist OOP?
203
6.2 Klassen, Objekte und eigene Methoden
204
6.3 Konstruktor und Destruktor
206
6.4 Besondere Methoden
208
6.5 Operatormethoden
209
6.6 Referenz, Identität und Kopie
211
6.7 Vererbung
213
6.8 Mehrfachvererbung
216
6.9 Enumerationen
219
6.10 Spiel, objektorientierte Version
220
7 Verschiedene Module
225
7.1 Datum und Zeit
225
7.1.1 Ausgabe der Zeit mit »localtime()«
225
7.1.2 Ausgabe der Zeit mit »strftime()«
227
7.1.3 Zeitangabe erzeugen
229
7.1.4 Mit Zeitangaben rechnen
230
7.1.5 Programm anhalten
232
7.1.6 Spiel, Version mit Zeitmessung
233
7.1.7 Spiel, objektorientierte Version mit Zeitmessung
235
7.2 Container »double-ended queue«
236
7.2.1 Operationen
237
7.2.2 Veränderungen
239
7.3 Multithreading
241
7.3.1 Wozu dient Multithreading?
241
7.3.2 Erzeugung eines Threads
241
7.3.3 Identifizierung eines Threads
243
7.3.4 Gemeinsame Daten und Objekte
244
7.3.5 Threads und Exceptions
246
7.4 Reguläre Ausdrücke
247
7.4.1 Suchen von Teiltexten
248
7.4.2 Ersetzen von Teiltexten
252
7.5 Audioausgabe
255
8 Dateien
257
8.1 Dateitypen
257
8.2 Öffnen und Schließen einer Datei
258
8.3 Sequenzielle Dateien
259
8.3.1 Sequenzielles Schreiben
259
8.3.2 Sequenzielles Lesen
261
8.3.3 CSV-Datei schreiben
266
8.3.4 CSV-Datei lesen
269
8.4 Dateien mit festgelegter Struktur
271
8.4.1 Formatiertes Schreiben
271
8.4.2 Lesen an beliebiger Stelle
272
8.4.3 Schreiben an beliebiger Stelle
274
8.5 Serialisierung
276
8.5.1 Objekte in Datei schreiben
276
8.5.2 Objekte aus Datei lesen
278
8.6 Bearbeitung mehrerer Dateien
280
8.6.1 Funktion »glob.glob()«
280
8.6.2 Funktion »os.scandir()«
281
8.7 Informationen über Dateien
282
8.8 Dateien und Verzeichnisse verwalten
284
8.9 Beispielprojekt Morsezeichen
285
8.9.1 Morsezeichen aus Datei lesen
285
8.9.2 Ausgabe auf dem Bildschirm
287
8.9.3 Ausgabe mit Tonsignalen
288
8.10 Spiel, Version mit Highscore-Datei
290
8.10.1 Eingabebeispiel
291
8.10.2 Aufbau des Programms
291
8.10.3 Code des Programms
292
8.11 Spiel, objektorientierte Version mit Highscore-Datei
297
9 Internet
303
9.1 Laden und Senden von Internetdaten
303
9.1.1 Daten lesen
304
9.1.2 Daten kopieren
306
9.1.3 Daten senden per »GET«
307
9.1.4 Daten senden per »POST«
310
9.2 Webserver-Programmierung
312
9.2.1 Erstes Programm
313
9.2.2 Beantworten einer Benutzereingabe
314
9.2.3 Formularelemente mit mehreren Werten
317
9.2.4 Typen von Formularelementen
320
9.3 Browser aufrufen
326
9.4 Spiel, Version für das Internet
326
9.4.1 Eingabebeispiel
327
9.4.2 Aufbau des Programms
328
9.4.3 Code des Programms
329
10 Datenbanken
339
10.1 Aufbau von Datenbanken
339
10.2 SQLite
340
10.2.1 Datenbank, Tabelle und Datensätze
341
10.2.2 Daten anzeigen
343
10.2.3 Daten auswählen, Operatoren
344
10.2.4 Operator »LIKE«
347
10.2.5 Sortierung der Ausgabe
349
10.2.6 Auswahl nach Eingabe
350
10.2.7 Datensätze ändern
352
10.2.8 Datensätze löschen
354
10.3 SQLite auf dem Webserver
355
10.4 MySQL
357
10.4.1 XAMPP und Connector/Python
358
10.4.2 Datenbank erzeugen
359
10.4.3 Tabelle anlegen
360
10.4.4 Datensätze anlegen
362
10.4.5 Daten anzeigen
363
10.5 Spiel, Version mit Highscore-Datenbank
364
10.6 Spiel, objektorientierte Version mit Highscore-Datenbank
367
11 Benutzeroberflächen
371
11.1 Einführung
371
11.1.1 Eine erste GUI-Anwendung
372
11.1.2 Ändern von Eigenschaften
374
11.2 Widget-Typen
375
11.2.1 Anzeigefeld, Label
375
11.2.2 Einzeilige Textbox, Entry
378
11.2.3 Versteckte Eingabe
380
11.2.4 Mehrzeilige Textbox, Text
382
11.2.5 Scrollende Textbox, ScrolledText
384
11.2.6 Listbox mit einfacher Auswahl
386
11.2.7 Listbox mit mehrfacher Auswahl
388
11.2.8 Scrollbar, scrollende Widgets
389
11.2.9 Radiobuttons zur Auswahl, Widget-Variablen
391
11.2.10 Radiobuttons zur Auswahl und Ausführung
394
11.2.11 Checkbuttons zur mehrfachen Auswahl
395
11.2.12 Schieberegler, Scale
397
11.2.13 Mausereignisse
400
11.2.14 Tastaturereignisse
403
11.3 Geometrische Anordnung von Widgets
405
11.3.1 Frame-Widget, Methode »pack()«
406
11.3.2 Ein einfacher Taschenrechner
408
11.3.3 Methode »grid()«
412
11.3.4 Methode »place()«, absolute Koordinaten
414
11.3.5 Methode »place()«, relative Koordinaten
416
11.3.6 Absolute Veränderung von Koordinaten
418
11.3.7 Relative Veränderung von Koordinaten
419
11.4 Menüs, Messageboxen und Dialogfelder
423
11.4.1 Menüleisten
424
11.4.2 Kontextmenüs
429
11.4.3 Messageboxen
431
11.4.4 Eigene Dialogfelder
436
11.4.5 Ausführung verhindern
438
11.5 Spiel, GUI-Version
439
12 Unterschiede in Python 2
445
12.1 Neue und geänderte Eigenschaften
445
12.1.1 Auffällige Änderungen
445
12.1.2 Weitere Änderungen
446
12.2 Konvertierung von Python 2 zu Python 3
447
13 Raspberry Pi
449
13.1 Einzelteile und Installation
449
13.1.1 Einzelteile
449
13.1.2 Sicherheit und Schäden
450
13.1.3 Zusammenbau
451
13.1.4 Installation von Raspbian
451
13.1.5 Start von Raspbian
452
13.2 Elektronische Schaltungen
453
13.2.1 Gleichspannungs-Stromkreis
453
13.2.2 Spannung ist Information
454
13.2.3 Bauelemente und Ausrüstung
455
13.2.4 Widerstände
455
13.3 Aufbau des GPIO-Anschlusses
457
13.4 Lüftersteuerung
459
13.4.1 Temperatur ermitteln
459
13.4.2 Leuchtdioden
459
13.4.3 Leuchtdiode ansteuern
460
13.4.4 Leuchtdiode blinken lassen
461
13.4.5 Mehrere Leuchtdioden
462
13.4.6 Lüfter ansteuern
463
13.4.7 Temperaturabhängige Lüftersteuerung
464
13.4.8 Temperatur in Datenbank speichern
465
A Anhang
469
A.1 Installation von XAMPP
469
A.1.1 Installation von XAMPP unter Windows
469
A.1.2 Installation von XAMPP unter Ubuntu Linux
470
A.1.3 Installation von XAMPP unter macOS
470
A.2 UNIX-Befehle
471
A.2.1 Inhalt eines Verzeichnisses
471
A.2.2 Verzeichnis anlegen, wechseln und löschen
472
A.2.3 Datei kopieren, verschieben und löschen
473
A.3 Lösungen
474
A.3.1 Lösungen zu Kapitel 2
474
A.3.2 Lösungen zu Kapitel 3
474
A.3.3 Lösungen zu Kapitel 5
479
Index
481