Inhaltsverzeichnis

Alle Kapitel aufklappen
Alle Kapitel zuklappen
Materialien zum Buch
16
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
28
2.2.1 Hallo Welt
28
2.2.2 Eingabe eines Programms
28
2.3 Speichern und Ausführen
29
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
33
2.3.6 Lange Ausgaben
33
3 Programmierkurs
35
3.1 Ein Spiel programmieren
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.2.6 Typhinweise
41
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
49
3.3.7 Spiel, Version mit genauer Bewertung der Eingabe
50
3.3.8 Rangfolge der Operatoren
51
3.4 Schleifen
52
3.4.1 for-Schleife
52
3.4.2 Schleifenabbruch mit »break«
53
3.4.3 Geschachtelte Kontrollstrukturen
54
3.4.4 Spiel, Version mit for-Schleife und Abbruch
55
3.4.5 for-Schleife mit »range()«
56
3.4.6 Spiel, Version mit »range()«
59
3.4.7 while-Schleife
61
3.4.8 Spiel, Version mit while-Schleife und Zähler
62
3.4.9 Kombinierte Zuweisungsausdrücke
64
3.5 Entwicklung eines Programms
64
3.6 Fehler und Ausnahmen
65
3.6.1 Basisprogramm
66
3.6.2 Fehler abfangen
67
3.6.3 Eingabe wiederholen
68
3.6.4 Exkurs: Schleifenfortsetzung mit »continue«
70
3.6.5 Spiel, Version mit Ausnahmebehandlung
71
3.7 Funktionen und Module
72
3.7.1 Einfache Funktionen
73
3.7.2 Funktionen mit einem Parameter
75
3.7.3 Funktionen mit mehreren Parametern
76
3.7.4 Funktionen mit Rückgabewert
77
3.7.5 Spiel, Version mit Funktionen
78
3.8 Das fertige Spiel
80
4 Datentypen
85
4.1 Zahlen
85
4.1.1 Ganze Zahlen
85
4.1.2 Zahlen mit Nachkommastellen
87
4.1.3 Typ ermitteln
88
4.1.4 Operator **
88
4.1.5 Rundung und Konvertierung
89
4.1.6 Winkelfunktionen
91
4.1.7 Weitere mathematische Funktionen
91
4.1.8 Bitoperatoren
94
4.1.9 Brüche
96
4.2 Zeichenketten
99
4.2.1 Eigenschaften
99
4.2.2 Operatoren
101
4.2.3 Operationen
102
4.2.4 Funktionen
104
4.2.5 Umwandlung einer Zeichenkette in eine Zahl
108
4.2.6 Umwandlung einer Zahl in eine Zeichenkette
110
4.2.7 Datentyp »bytes«
110
4.3 Listen
111
4.3.1 Eigenschaften
112
4.3.2 Operatoren
114
4.3.3 Funktionen und Operationen
114
4.4 Tupel
118
4.4.1 Eigenschaften
118
4.4.2 Operationen
118
4.4.3 Tupel entpacken
120
4.5 Dictionarys
122
4.5.1 Eigenschaften
122
4.5.2 Operatoren und Funktionen
124
4.5.3 Views
125
4.5.4 Vergleiche
127
4.6 Mengen, Sets
128
4.6.1 Eigenschaften
128
4.6.2 Funktionen
129
4.6.3 Operatoren
130
4.6.4 Frozenset
132
4.7 Wahrheitswerte und Nichts
133
4.7.1 Wahrheitswerte True und False
133
4.7.2 Nichts, None
137
4.8 Referenz, Identität und Kopie
138
4.8.1 Referenz und Identität
138
4.8.2 Ressourcen sparen
140
4.8.3 Objekte kopieren
142
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
157
5.3 Conditional Expression
159
5.4 Iterierbare Objekte
160
5.4.1 Funktion »zip()«
160
5.4.2 Funktion »map()«
161
5.4.3 Funktion »filter()«
163
5.5 List Comprehension
164
5.6 Fehler und Ausnahmen
166
5.6.1 Allgemeines
166
5.6.2 Syntaxfehler
166
5.6.3 Laufzeitfehler
168
5.6.4 Logische Fehler und Debugging
169
5.6.5 Fehler erzeugen
173
5.6.6 Unterscheidung von Ausnahmen
175
5.7 Funktionen
176
5.7.1 Variable Anzahl von Parametern
177
5.7.2 Benannte Parameter
178
5.7.3 Parameter mit Vorgabewerten
179
5.7.4 Mehrere Rückgabewerte
180
5.7.5 Übergabe von Kopien und Referenzen
181
5.7.6 Lokal, global
184
5.7.7 Rekursive Funktionen
186
5.7.8 Lambda-Funktion
187
5.7.9 Funktionsname als Parameter
187
5.8 Eingebaute Funktionen
189
5.8.1 Funktionen »max()«, »min()« und »sum()«
191
5.8.2 Funktionen »chr()« und »ord()«
191
5.8.3 Funktionen »reversed()« und »sorted()«
193
5.9 Statistikfunktionen
194
5.10 Eigene Module
197
5.10.1 Eigene Module erzeugen
197
5.10.2 Standard-Import eines Moduls
198
5.10.3 Import eines Moduls mit Umbenennung
198
5.10.4 Import von Funktionen
198
5.11 Parameter der Kommandozeile
199
5.11.1 Übergabe von Zeichenketten
200
5.11.2 Übergabe von Zahlen
200
5.11.3 Beliebige Anzahl von Parametern
201
5.12 Programm »Bruchtraining«
201
5.12.1 Der Ablauf des Programms
202
5.12.2 Hauptprogramm
203
5.12.3 Eine leichte Aufgabe
204
5.12.4 Eine mittelschwere Aufgabe
205
5.12.5 Eine schwere Aufgabe
207
6 Objektorientierte Programmierung
209
6.1 Was ist OOP?
209
6.2 Klassen, Objekte und eigene Methoden
210
6.3 Konstruktor und Destruktor
212
6.4 Besondere Methoden
214
6.5 Operatormethoden
216
6.6 Referenz, Identität und Kopie
217
6.7 Vererbung
220
6.8 Mehrfachvererbung
223
6.9 Datenklassen
225
6.10 Enumerationen
227
6.11 Spiel, objektorientierte Version
229
7 Verschiedene Module
233
7.1 Datum und Zeit
233
7.1.1 Ausgabe der Zeit mit »localtime()«
233
7.1.2 Ausgabe der Zeit mit »strftime()«
235
7.1.3 Zeitangabe erzeugen
237
7.1.4 Mit Zeitangaben rechnen
238
7.1.5 Programm anhalten
240
7.1.6 Spiel, Version mit Zeitmessung
242
7.1.7 Spiel, objektorientierte Version mit Zeitmessung
243
7.2 Warteschlangen
244
7.2.1 Klasse SimpleQueue
245
7.2.2 Klasse LifoQueue
246
7.2.3 Klasse PriorityQueue
247
7.2.4 Klasse deque
247
7.3 Multithreading
251
7.3.1 Wozu dient Multithreading?
251
7.3.2 Erzeugung eines Threads
252
7.3.3 Identifizierung eines Threads
253
7.3.4 Gemeinsame Daten und Objekte
254
7.3.5 Threads und Exceptions
256
7.4 Reguläre Ausdrücke
257
7.4.1 Suchen von Teiltexten
258
7.4.2 Ersetzen von Teiltexten
262
7.5 Audioausgabe
265
8 Dateien
267
8.1 Dateitypen
267
8.2 Öffnen und Schließen einer Datei
268
8.3 Sequenzielle Dateien
269
8.3.1 Sequenzielles Schreiben
269
8.3.2 Sequenzielles Lesen
271
8.3.3 CSV-Datei schreiben
276
8.3.4 CSV-Datei lesen
278
8.4 Dateien mit festgelegter Struktur
280
8.4.1 Formatiertes Schreiben
281
8.4.2 Lesen an beliebiger Stelle
282
8.4.3 Schreiben an beliebiger Stelle
284
8.5 Serialisierung
285
8.5.1 Objekte in Datei schreiben
286
8.5.2 Objekte aus Datei lesen
287
8.6 Bearbeitung mehrerer Dateien
289
8.6.1 Funktion »glob.glob()«
289
8.6.2 Funktion »os.scandir()«
291
8.7 Informationen über Dateien
292
8.8 Dateien und Verzeichnisse verwalten
293
8.9 Beispielprojekt Morsezeichen
294
8.9.1 Morsezeichen aus Datei lesen
295
8.9.2 Ausgabe auf dem Bildschirm
296
8.9.3 Ausgabe mit Tonsignalen
297
8.10 Spiel, Version mit Highscore-Datei
300
8.10.1 Eingabebeispiel
300
8.10.2 Aufbau des Programms
301
8.10.3 Code des Programms
301
8.11 Spiel, objektorientierte Version mit Highscore-Datei
306
9 Internet
311
9.1 Laden und Senden von Internetdaten
311
9.1.1 Daten lesen
312
9.1.2 Daten kopieren
314
9.1.3 Daten senden per »GET«
315
9.1.4 Daten senden per »POST«
318
9.2 Webserver-Programmierung
320
9.2.1 Erstes Programm
321
9.2.2 Beantworten einer Benutzereingabe
322
9.2.3 Formularelemente mit mehreren Werten
325
9.2.4 Typen von Formularelementen
327
9.3 Browser aufrufen
333
9.4 Spiel, Version für das Internet
334
9.4.1 Eingabebeispiel
334
9.4.2 Aufbau des Programms
336
9.4.3 Code des Programms
337
10 Datenbanken
345
10.1 Aufbau von Datenbanken
345
10.2 SQLite
346
10.2.1 Datenbank, Tabelle und Datensätze
347
10.2.2 Daten anzeigen
349
10.2.3 Daten auswählen, Operatoren
350
10.2.4 Operator »LIKE«
353
10.2.5 Sortierung der Ausgabe
355
10.2.6 Auswahl nach Eingabe
356
10.2.7 Datensätze ändern
357
10.2.8 Datensätze löschen
360
10.3 SQLite auf dem Webserver
361
10.4 MySQL
363
10.4.1 XAMPP und Connector/Python
364
10.4.2 Datenbank erzeugen
364
10.4.3 Tabelle anlegen
366
10.4.4 Datensätze anlegen
367
10.4.5 Daten anzeigen
369
10.5 Spiel, Version mit Highscore-Datenbank
370
10.6 Spiel, objektorientierte Version mit Highscore-Datenbank
373
11 Benutzeroberflächen
375
11.1 Einführung
375
11.1.1 Eine erste GUI-Anwendung
376
11.1.2 Ändern von Eigenschaften
378
11.2 Widget-Typen
379
11.2.1 Anzeigefeld, Label
379
11.2.2 Eigenschaften von Bildern
382
11.2.3 Einzeilige Textbox, Entry
385
11.2.4 Versteckte Eingabe
387
11.2.5 Mehrzeilige Textbox, Text
388
11.2.6 Scrollende Textbox, ScrolledText
390
11.2.7 Listbox mit einfacher Auswahl
392
11.2.8 Listbox mit mehrfacher Auswahl
394
11.2.9 Spinbox
395
11.2.10 Scrollbar, scrollende Widgets
398
11.2.11 Radiobuttons zur Auswahl, Widget-Variablen
400
11.2.12 Radiobuttons zur Auswahl und Ausführung
402
11.2.13 Checkbuttons zur mehrfachen Auswahl
403
11.2.14 Schieberegler, Scale
406
11.2.15 Mausereignisse
408
11.2.16 Tastaturereignisse
411
11.3 Geometrische Anordnung von Widgets
413
11.3.1 Frame-Widget, Methode »pack()«
414
11.3.2 Ein einfacher Taschenrechner
416
11.3.3 Methode »grid()«
420
11.3.4 Methode »place()«, absolute Koordinaten
422
11.3.5 Methode »place()«, relative Koordinaten
424
11.3.6 Absolute Veränderung von Koordinaten
426
11.3.7 Relative Veränderung von Koordinaten
427
11.4 Menüs, Messageboxen und Dialogfelder
431
11.4.1 Menüleisten
432
11.4.2 Kontextmenüs
437
11.4.3 Messageboxen
439
11.4.4 Eigene Dialogfelder
444
11.4.5 Ausführung verhindern
446
11.5 Spiel, GUI-Version
447
12 Unterschiede in Python 2
453
12.1 Neue und geänderte Eigenschaften
453
12.1.1 Auffällige Änderungen
453
12.1.2 Weitere Änderungen
454
12.2 Konvertierung von Python 2 zu Python 3
455
13 Raspberry Pi
457
13.1 Einzelteile und Installation
457
13.1.1 Einzelteile
457
13.1.2 Weitere Bausätze
459
13.1.3 Sicherheit und Schäden
460
13.1.4 Zusammenbau
460
13.1.5 Erster Start
461
13.1.6 Raspberry Desktop
462
13.1.7 Terminal
462
13.2 Elektronische Schaltungen
463
13.2.1 Gleichspannungs-Stromkreis
463
13.2.2 Spannung ist Information
464
13.2.3 Bauelemente und Ausrüstung
465
13.2.4 Widerstände
465
13.2.5 Aufbau des GPIO-Anschlusses
467
13.3 Lüftersteuerung
468
13.3.1 Temperatur ermitteln
468
13.3.2 Leuchtdioden
469
13.3.3 Leuchtdiode ansteuern
470
13.3.4 Leuchtdiode blinken lassen
471
13.3.5 Mehrere Leuchtdioden
471
13.3.6 Lüfter ansteuern
472
13.3.7 Temperaturabhängige Lüftersteuerung
474
13.3.8 Temperatur in Datenbank speichern
475
13.4 Roboter AlphaBot2-Pi
477
13.4.1 Demo-Programme
477
13.4.2 SSH-Verbindung zur Befehlseingabe
478
13.4.3 SSH-Server auf Raspberry Pi
478
13.4.4 PuTTY als SSH-Client
479
13.4.5 Montage des Roboters
481
13.4.6 Erstes Programm
482
13.4.7 Alle Richtungen
484
13.4.8 Dateien übertragen mit PSCP
485
13.4.9 Steuerung per Tastatur
486
13.4.10 Umfahren von Hindernissen
488
Anhang
491
A.1 Erstellen von EXE-Dateien
491
A.2 Installation von XAMPP
492
A.3 UNIX-Befehle
494
A.4 Lösungen
497
Index
505