Inhaltsverzeichnis

Alle Kapitel aufklappen
Alle Kapitel zuklappen
Vorwort
21
TEIL I Python lernen
23
1 Hello, World!
25
1.1 Python installieren
26
Linux
26
Windows
27
macOS (Standardinstallation)
28
macOS (Manuelle »brew«-Installation)
29
1.2 »Hello, World!« in der Python-Shell
31
Python in der Shell kennenlernen
32
1.3 »Hello, World!« als eigenständiges Script
34
Das Hello-World-Script unter Windows ausführen
35
Das Hello-World-Script unter Linux und macOS ausführen
36
Was ist ein Script?
37
Windows versus Linux/macOS
38
Noch ein Beispiel
40
1.4 Entwicklungsumgebungen (IDEs)
42
Thonny
43
1.5 Elementare Syntaxregeln
45
Anweisungen
45
Blockelemente
46
»print«
47
»input«
49
Module und »import«
49
Kommentare
51
1.6 Wiederholungsfragen
52
2 Variablen
53
2.1 Grundregeln
53
Variablennamen
54
2.2 Datentypen
55
Erkennung des Datentyps
56
Angabe des vorgesehen Datentyps (Type Annotation)
57
Mutable oder immutable
57
Veränderliche Daten kopieren
60
Typumwandlung
61
2.3 Gültigkeitsbereich von Variablen
62
2.4 Wiederholungsfragen
64
3 Operatoren
65
3.1 Überblick
65
3.2 Details und Sonderfälle
67
Division
67
Zuweisung und Berechnung verbinden
67
»in«-Operator
68
Binäre versus logische Operatoren
68
Short-Circuit-Evaluation
69
Operatorhierarchie
69
Variablen und Daten vergleichen
71
Mehrfachvergleiche
72
»operator«-Modul
72
Operatoren selbst implementieren
73
3.3 Wiederholungsfragen
73
4 Zahlen
74
4.1 Ganze Zahlen
75
Division
75
Binäre und hexadezimale Darstellung
76
Zufallszahlen
77
4.2 Fließ kommazahlen
77
Rundungsfehler
77
Zufallszahlen
78
4.3 Komplexe Zahlen, Brüche und Festkommazahlen
79
Komplexe Zahlen
79
Rationale Zahlen (Brüche)
80
Dezimalzahlen
80
4.4 Boolesche Werte
81
4.5 Wiederholungsfragen
82
5 Zeichenketten
83
5.1 Grundregeln
83
Zeichenketten aneinanderfügen und vervielfältigen
84
Sonderzeichen
84
Raw-Zeichenketten
86
»chr«- und »ord«-Funktion
86
5.2 Zugriff auf Teilzeichenketten
86
»IndexError«
87
Schrittweite (Stride)
87
5.3 Zeichenkettenfunktionen
88
Eigenschaften von Zeichen(ketten) ermitteln
91
Suchen und ersetzen
92
5.4 Zeichenketten formatieren und konvertieren
92
Daten formatieren
93
Formatierung mit dem Prozentoperator
93
Formatierung mit der »format«-Methode
95
»format«-Kurzschreibweise (ab Python 3.6)
96
5.5 Lokalisierung
97
Lokalisierte Zeichenketten in Zahlen umwandeln
98
Lokalisierungsbeispiel
99
5.6 Reguläre Ausdrücke
100
5.7 Wiederholungsfragen und Übungen
102
6 Datum und Zeit
103
6.1 Zeit ermitteln und darstellen
103
Datum aus Zeichenkette einlesen (»parsen«)
105
Datum ohne Zeit
105
Zeit ohne Datum
106
Objekte für einen beliebigen Zeitpunkt
106
Zeiten mit Zeitzone
107
6.2 Mit Zeiten rechnen
108
Zeiten subtrahieren
109
Laufzeit von Code messen
109
6.3 Wiederholungsfragen und Übungen
110
7 Listen, Tupel, Sets und Dictionaries
111
7.1 Listen
112
»range«-Funktion
113
Listen und Zeichenketten
113
List Comprehension
114
7.2 Funktionen zur Verarbeitung von Listen
115
»map«-Funktion
117
»reduce«-Funktion
119
»filter«-Funktion
120
Listen sortieren
121
Zeichenketten mit deutschen Buchstaben sortieren
122
7.3 Tupel (Sequenzen)
122
Anwendungsfälle
123
»zip«-Funktion
124
7.4 Sets (Mengen)
125
»set«-Methoden
126
Mengenlehre
127
7.5 Dictionaries
127
Dictionaries (assoziative Arrays)
127
Verarbeitung von Dictionary-Elementen
129
»zip«-Funktion
130
7.6 Type Annotations
130
7.7 Arrays
131
7.8 Wiederholungsfragen und Übungen
133
8 Verzweigungen und Schleifen
134
8.1 »if«-Verzweigung
134
»pass«-Schlüsselwort
136
»if«-Kurzschreibweise
136
Kein »switch«
137
8.2 Beispiel: Schaltjahrtest
138
8.3 »for«-Schleife
139
Schleifen über Zahlenbereiche (»range«)
140
Schleifen über die Zeichen einer Zeichenkette
141
Schleifen über Listen, Tupel und Sets
141
»enumerate«-Funktion
142
List/Set/Tupel Comprehension
142
Schleifen über Dictionaries, Dictionary Comprehension
143
Generator Expressions
144
»break«, »continue« und »else«
145
»_« als Schleifenvariable
146
8.4 »while«-Schleife
147
8.5 Beispiele für Schleifen
148
Summe der Zahlen von 1 bis 1.000
149
Einmaleins-Tabelle
150
Parameter verarbeiten
151
8.6 Wiederholungsfragen und Übungen
153
9 Funktionen
155
9.1 Eigene Funktionen definieren
156
»Hello, Function!«
157
Beispiel: Zufällige Zeichenkette
157
Beispiel: Passwortgenerator
159
9.2 Lokale und globale Variablen
160
Variablenverwaltung
161
Globale Variablen
162
9.3 Parameter
164
Parameter für unveränderliche Typen (immutable)
164
Parameter für veränderliche Typen (mutable)
164
Optionale Parameter
165
Variable Parameteranzahl
166
Parametertyp überprüfen
168
Type Annotations
169
9.4 Rekursion
169
Fakultät rekursiv berechnen
169
Unkontrollierte Rekursion
170
9.5 Lambda-Funktionen
171
9.6 Funktionale Programmierung
173
Beispiel: Funktionsgenerator
173
Beispiel: verschachtelter Funktionsgenerator
174
Beispiel: Listengenerator
174
9.7 Generatoren
176
Beispiel: Fibonacci-Zahlen
176
9.8 Wiederholungsfragen und Übungen
179
10 Umgang mit Fehlern (Exceptions)
182
10.1 Fehlerabsicherung mit »try« und »except«
183
Beispiel
184
Catch-all-Absicherung
186
Auswertung von Exception-Objekten
186
Nichts tun mit »pass«
187
Fehler in verschachteltem Code
187
10.2 Selbst Exceptions auslösen (»raise«)
189
10.3 Programmunterbrechungen abfangen
189
Absicherung mit »try«/»except«
190
Absicherung mit »signal«
190
Probleme beim Programmabbruch
191
10.4 Wiederholungsfragen und Übungen
192
11 Objektorientierte Programmierung
194
11.1 Crashkurs
195
Funktionen helfen, Teilaufgaben zu lösen
195
Klassen bringen Daten und Methoden zusammen
195
Objekte sind konkrete Ausformungen von Klassen
196
Begriffe (Nomenklatur)
197
11.2 »Hello, Class!«
199
Konstruktor
199
Methoden
200
Verwendung der Klasse (»Hello, Object!«)
201
11.3 Klassen- und Instanzvariablen
203
Namensräume
204
Nochmals Instanz- versus Klassenvariable
205
Type Annotations
206
Private Instanzvariablen
207
11.4 Methoden
208
Statische Methoden versus Instanzmethoden
208
Methoden innerhalb einer Klasse aufrufen
210
Getter- und Setter-Methoden (Eigenschaften)
212
11.5 Operator Overloading
214
Gleichheitstest (»eq«-Methode)
216
Umwandlung in Zeichenkette (»str« und »repr«)
216
Größ envergleich (»lt« und »le«)
217
Hash-Funktion
218
11.6 Unveränderliche Objekte
219
Hash-Funktionen für veränderliche Objekte
219
Veränderungen von auß en verhindern
220
11.7 Datenklassen
221
Unveränderliche Datenklassen
222
11.8 Vererbung
223
Klassenzuordnung und -hierarchie feststellen
224
Beispiel: Schachfiguren
225
Klasse für Pferd/Springer
227
Klasse für Läufer
228
Mehrfachvererbung
229
11.9 Wiederholungsaufgaben und Übungen
230
12 Module
234
12.1 Module nutzen (»import«)
234
»import as«
235
»from import«
236
12.2 Modul-Interna
237
Welche Module stehen zur Verfügung?
237
Wo befinden sich Moduldateien?
238
Welche Module sind geladen?
240
12.3 Module installieren (»pip«)
240
»pip« installieren oder aktualisieren
242
Pakete installieren und verwalten
242
12.4 Eigene Module entwickeln
244
Variablen über mehrere Module teilen
245
Packages
245
»pycache«-Verzeichnis
247
12.5 Wiederholungsfragen und Übungen
247
13 Interna
249
13.1 Garbage Collection
249
13.2 Shared References
250
13.3 Namensräume erforschen
252
13.4 Python-Compiler
254
13.5 Systemfunktionen
255
Programmparameter
255
Andere Programme bzw. Kommandos aufrufen
256
Warten (»sleep«)
256
Asynchrone Programmierung
256
Programm beenden
257
13.6 Python 2
258
»print«
259
»input«
260
Ganze Zahlen
260
Operatoren
260
Zahlenbereiche (»range«/»xrange«)
260
Listen und andere Aufzählungen
261
Unicode
261
Exceptions (Fehler)
261
»future«-Modul
261
TEIL II Python anwenden
263
14 Dateien lesen und schreiben
265
14.1 Verzeichnisse
265
Das aktuelle Verzeichnis
266
Das Codeverzeichnis
266
Heimatverzeichnis ermitteln
267
Temporäres Verzeichnis und temporäre Dateien
267
Verzeichnis- und Dateinamen kombinieren und zerlegen
268
Verzeichnisse erstellen, umbenennen und löschen
269
Verzeichnisse durchsuchen
270
14.2 Textdateien lesen und schreiben
270
»Hello, File!«
272
Dateien mit »with/as« automatisch schließ en
273
14.3 Beispiel: Indexeinträge in Textdateien ändern
275
14.4 Standardeingabe und Standardausgabe
277
Beispiel
278
14.5 JSON-Dateien verarbeiten
279
»Hello, JSON!«
279
JSON-Dokumente erzeugen
280
JSON für Objekte eigener Klassen
281
14.6 XML-Dateien verarbeiten
283
»Hello, XML!«
284
Beispiel: Newsfeed auswerten
286
14.7 Wiederholungsfragen und Übungen
288
15 Netzwerkfunktionen
289
15.1 Download und Upload von Dateien
289
Zertifikatsprobleme unter macOS
290
Groß e Dateien stückweise herunterladen
291
FTP
292
15.2 Mails versenden
293
Mail-Versand an einen externen SMTP-Server
294
HTML-Mail
295
Bild hinzufügen
295
Weitere Mail-Varianten
296
15.3 Dropbox
296
Dropbox-Zugang testen
297
Upload
298
Download
299
15.4 Twitter
300
Tweet senden
300
16 Systemadministration
303
16.1 Linux-Kommandos aufrufen
303
Ergebnisse verarbeiten
304
Kommando durch die »bash« ausführen
305
Fehler beim Kommandoaufruf
306
16.2 Linux-Accounts einrichten
307
Passwörter erzeugen
308
Dateien lesen und schreiben
308
Kommandos aufrufen
308
Script ausführen
309
Accounts wieder löschen
309
16.3 MySQL/MariaDB-Datenbankzugriff
310
Voraussetzungen
311
»Hello, Database!«
312
Verbindungsaufbau
313
SQL-Kommandos ausführen
313
SELECT-Ergebnisse verarbeiten
314
Weitere Informationen
314
16.4 Mehrere gleichartige Datenbanken analysieren
315
SELECT-Kommando zusammenstellen
315
Liste der Kundendatenbanken einlesen
316
Datenbankverbindung herstellen, Abfragen durchführen
316
Auswertung
317
17 Raspberry Pi
319
17.1 GPIO-Zugriff mit RPi.GPIO
320
GPIO-Setup
321
LED ein- und ausschalten
323
LED-Helligkeit steuern
323
Zustand eines Tasters auswerten
324
Taster entprellen
325
17.2 LED-Ampel für die CPU-Temperatur
327
Code
328
Test
330
17.3 GPIO-Zugriff mit »gpiozero«
330
Nochmals die CPU-Temperatur visualisieren
331
17.4 Sense HAT
332
»Hello, Sense HAT!«
332
Das Display Pixel für Pixel steuern
333
Pixel mit Joystick bewegen
335
Pixel mit dem Gyroscope-Sensor bewegen
337
18 Grafische Benutzeroberflächen
339
18.1 »Hello, Qt!«
340
18.2 Buttons platzieren und nutzen
343
Gewöhnliche Buttons
343
Auswahlhäkchen (Checkboxes) und Radio-Buttons
345
18.3 Textfelder, Grid-Layout und Nachrichtenboxen
347
Grid-Layout
348
Nachrichtenbox anzeigen
351
18.4 Dateiauswahl
352
Beispiel
353
18.5 Listenfelder
355
Beispiel: Länderauswahl
356
18.6 Oberfläche zur GPIO-Steuerung
359
Programmaufbau
360
Schieberegler (»QSlider«)
361
Periodischer Aufruf einer Methode (»QTimer«)
361
19 Grafikprogrammierung
363
19.1 Grafische Grundfunktionen
364
Linien
367
Rechtecke und Polygone
367
Kreise und Ellipsen
368
Text
369
Hintergrundfarbe einstellen
370
19.2 Grafik in einem Widget
370
Grafik in PNG-Datei speichern
372
19.3 Spaß mit Sinus und Cosinus
373
Programmaufbau
374
Einen Kreis zeichnen
376
Spiralkurve zeichnen
376
Linienmuster zeichnen
377
Bunte, verdrehte Rechtecke auf einer Spiralkurve zeichnen
378
19.4 Temperaturkurve anzeigen
379
Programmaufbau
380
Daten einlesen
381
Gitter zeichnen und beschriften
382
Temperaturkurve zeichnen
384
Verbesserungsmöglichkeiten
385
20 Wissenschaftliche Anwendung
386
20.1 Anaconda, IPython und Jupyter-Notebooks
387
Installation
388
Paketmanager »conda«
389
IPython
390
Jupyter-Notebooks
393
20.2 NumPy
395
Matrizen erzeugen und speichern
396
Slicing
397
Mit Matrizen rechnen
398
20.3 pandas
400
Serien (»Series«-Klasse)
401
Tabellen (»DataFrame«-Klasse)
402
20.4 SciPy
406
Beispiel 1: Minimum einer Funktion suchen
406
Beispiel 2: Interpolationsfunktion
408
20.5 Matplotlib
409
»Hello, Matplotlib!«
410
»vectorize«-Funktion
412
Diagramm und Achsen beschriften
413
Mehrteilige Diagramme
414
Temperaturkurve
415
Andere Diagrammtypen
417
Anhang
419
A Lösungen
419
A.1 Kapitel 1: »Hello, World!«
419
A.2 Kapitel 2: Variablen
421
A.3 Kapitel 3: Operatoren
423
A.4 Kapitel 4: Zahlen
423
A.5 Kapitel 5: Zeichenketten
425
A.6 Kapitel 6: Datum und Uhrzeit
426
A.7 Kapitel 7: Listen, Tupel, Sets und Dictionaries
428
A.8 Kapitel 8: Verzweigungen und Schleifen
432
A.9 Kapitel 9: Funktionen
436
A.10 Kapitel 10: Umgang mit Fehlern
441
A.11 Kapitel 11: Objektorientierte Programmierung
442
A.12 Kapitel 12: Module
447
A.13 Kapitel 14: Dateien lesen und schreiben
448
Index
453