|
Programmieren lernen mit Python |
3 |
|
|
Inhalt |
5 |
|
|
Vorwort |
13 |
|
|
Die seltsame Geschichte dieses Buchs |
13 |
|
|
Typografische Konventionen |
15 |
|
|
Nutzung der Codebeispiele |
15 |
|
|
Danksagungen |
15 |
|
|
Liste der Beitragenden |
16 |
|
|
Kapitel 1 – Programme entwickeln |
23 |
|
|
Die Programmiersprache Python |
23 |
|
|
Was ist ein Programm? |
25 |
|
|
Was ist Debugging? |
26 |
|
|
Syntaxfehler |
26 |
|
|
Laufzeitfehler |
26 |
|
|
Semantische Fehler |
27 |
|
|
Experimentelles Debugging |
27 |
|
|
Formale und natürliche Sprachen |
28 |
|
|
Das erste Programm |
30 |
|
|
Debugging |
30 |
|
|
Glossar |
31 |
|
|
Übungen |
33 |
|
|
Kapitel 2 – Variablen, Ausdrücke und Anweisungen |
35 |
|
|
Werte und Typen |
35 |
|
|
Variablen |
36 |
|
|
Variablennamen und Schlüsselwörter |
37 |
|
|
Operatoren und Operanden |
38 |
|
|
Ausdrücke und Anweisungen |
39 |
|
|
Interaktiver Modus und Skriptmodus |
39 |
|
|
Rangfolge von Operatoren |
40 |
|
|
String-Operationen |
41 |
|
|
Kommentare |
41 |
|
|
Debugging |
42 |
|
|
Glossar |
43 |
|
|
Übungen |
44 |
|
|
Kapitel 3 – Funktionen |
47 |
|
|
Funktionsaufrufe |
47 |
|
|
Funktionen zur Typkonvertierung |
47 |
|
|
Mathematische Funktionen |
48 |
|
|
Komposition |
49 |
|
|
Neue Funktionen erstellen |
49 |
|
|
Definition und Verwendung |
51 |
|
|
Programmablauf |
52 |
|
|
Parameter und Argumente |
52 |
|
|
Variablen und Parameter sind lokal |
53 |
|
|
Stapeldiagramme |
54 |
|
|
Funktionen mit und ohne Rückgabewert |
55 |
|
|
Warum Funktionen? |
56 |
|
|
Import mit from |
56 |
|
|
Debugging |
57 |
|
|
Glossar |
58 |
|
|
Übungen |
59 |
|
|
Kapitel 4 – Fallstudie: Gestaltung von Schnittstellen |
63 |
|
|
TurtleWorld |
63 |
|
|
Einfache Wiederholung |
64 |
|
|
Übungen |
65 |
|
|
Datenkapselung |
66 |
|
|
Generalisierung |
67 |
|
|
Gestaltung von Schnittstellen |
68 |
|
|
Refactoring |
69 |
|
|
Entwicklungsplan |
70 |
|
|
Docstring |
70 |
|
|
Debugging |
71 |
|
|
Glossar |
72 |
|
|
Übungen |
72 |
|
|
Kapitel 5 – Bedingungen und Rekursion |
75 |
|
|
Modulus-Operator |
75 |
|
|
Boolesche Ausdrücke |
75 |
|
|
Logische Operatoren |
76 |
|
|
Bedingte Ausführung |
76 |
|
|
Alternativer Programmablauf |
77 |
|
|
Verkettete Bedingungen |
77 |
|
|
Verschachtelte Bedingungen |
78 |
|
|
Rekursion |
79 |
|
|
Stapeldiagramme für rekursive Funktionen |
80 |
|
|
Endlose Rekursion |
81 |
|
|
Tastatureingaben |
81 |
|
|
Debugging |
82 |
|
|
Glossar |
84 |
|
|
Übungen |
85 |
|
|
Kapitel 6 – Funktionen mit Rückgabewert |
87 |
|
|
Rückgabewerte |
87 |
|
|
Inkrementelle Entwicklung |
88 |
|
|
Funktionskomposition |
91 |
|
|
Boolesche Funktionen |
91 |
|
|
Mehr Rekursion |
92 |
|
|
Vertrauensvorschuss |
94 |
|
|
Noch ein Beispiel |
95 |
|
|
Typprüfung |
95 |
|
|
Debugging |
96 |
|
|
Glossar |
98 |
|
|
Übungen |
98 |
|
|
Kapitel 7 – Iteration |
101 |
|
|
Mehrfache Zuweisungen |
101 |
|
|
Variablen aktualisieren |
102 |
|
|
Die while-Anweisung |
102 |
|
|
break |
104 |
|
|
Quadratwurzeln |
105 |
|
|
Algorithmen |
106 |
|
|
Debugging |
107 |
|
|
Glossar |
108 |
|
|
Übungen |
108 |
|
|
Kapitel 8 – Strings |
111 |
|
|
Ein String ist eine Folge |
111 |
|
|
len |
112 |
|
|
Traversierung mit einer Schleife |
112 |
|
|
String-Teile |
113 |
|
|
Strings sind unveränderbar |
114 |
|
|
Suchen |
115 |
|
|
Schleifen und Zähler |
115 |
|
|
String-Methoden |
116 |
|
|
Der in-Operator |
117 |
|
|
String-Vergleich |
118 |
|
|
Debugging |
118 |
|
|
Glossar |
120 |
|
|
Übungen |
121 |
|
|
Kapitel 9 – Fallstudie: Wortspiele |
123 |
|
|
Wortlisten einlesen |
123 |
|
|
Übungen |
124 |
|
|
Suchen |
125 |
|
|
Schleifen mit Indizes |
126 |
|
|
Debugging |
128 |
|
|
Glossar |
129 |
|
|
Übungen |
129 |
|
|
Kapitel 10 – Listen |
131 |
|
|
Eine Liste ist eine Sequenz |
131 |
|
|
Listen können geändert werden |
132 |
|
|
Listen durchlaufen |
133 |
|
|
Operationen mit Listen |
134 |
|
|
Listen-Slices |
134 |
|
|
Methoden für Listen |
135 |
|
|
Map, Filter und Reduktion |
135 |
|
|
Elemente löschen |
137 |
|
|
Listen und Strings |
138 |
|
|
Objekte und Werte |
139 |
|
|
Aliasing |
140 |
|
|
Listen als Argument |
141 |
|
|
Debugging |
142 |
|
|
Glossar |
143 |
|
|
Übungen |
145 |
|
|
Kapitel 11 – Dictionaries |
147 |
|
|
Dictionary als Menge von Zählern |
149 |
|
|
Schleifen und Dictionaries |
150 |
|
|
Inverse Suche |
151 |
|
|
Dictionaries und Listen |
152 |
|
|
Memos |
154 |
|
|
Globale Variablen |
155 |
|
|
Long Integer |
157 |
|
|
Debugging |
157 |
|
|
Glossar |
158 |
|
|
Übungen |
160 |
|
|
Kapitel 12 – Tupel |
161 |
|
|
Tupel sind unveränderbar |
161 |
|
|
Tupel-Zuweisung |
162 |
|
|
Tupel als Rückgabewerte |
163 |
|
|
Argument-Tupel mit variabler Länge |
163 |
|
|
Listen und Tupel |
164 |
|
|
Dictionaries und Tupel |
165 |
|
|
Tupel vergleichen |
167 |
|
|
Sequenzen mit Sequenzen |
169 |
|
|
Debugging |
169 |
|
|
Glossar |
170 |
|
|
Übungen |
171 |
|
|
Kapitel 13 – Fallstudie: Wahl der richtigen Datenstruktur |
173 |
|
|
Häufigkeitsanalyse für Wörter |
173 |
|
|
Zufallszahlen |
174 |
|
|
Worthistogramm |
175 |
|
|
Die häufigsten Wörter |
176 |
|
|
Optionale Parameter |
177 |
|
|
Dictionary-Subtraktion |
178 |
|
|
Zufallswörter |
179 |
|
|
Markov-Analyse |
179 |
|
|
Datenstrukturen |
181 |
|
|
Debugging |
183 |
|
|
Glossar |
184 |
|
|
Übungen |
184 |
|
|
Kapitel 14 – Dateien |
187 |
|
|
Persistenz |
187 |
|
|
Lesen und schreiben |
187 |
|
|
Formatoperator |
188 |
|
|
Dateinamen und Pfade |
189 |
|
|
Ausnahmen abfangen |
191 |
|
|
Datenbanken |
192 |
|
|
Pickling |
193 |
|
|
Pipes |
194 |
|
|
Module schreiben |
195 |
|
|
Debugging |
196 |
|
|
Glossar |
197 |
|
|
Übungen |
198 |
|
|
Kapitel 15 – Klassen und Objekte |
199 |
|
|
Benutzerdefinierte Typen |
199 |
|
|
Attribute |
200 |
|
|
Rechtecke |
201 |
|
|
Instanzen als Rückgabewerte |
202 |
|
|
Objekte sind veränderbar |
203 |
|
|
Kopieren |
204 |
|
|
Debugging |
205 |
|
|
Glossar |
206 |
|
|
Übungen |
206 |
|
|
Kapitel 16 – Klassen und Funktionen |
209 |
|
|
Zeit |
209 |
|
|
Reine Funktionen |
210 |
|
|
Modifizierende Funktionen |
211 |
|
|
Prototyping kontra Planung |
212 |
|
|
Debugging |
214 |
|
|
Glossar |
215 |
|
|
Übungen |
215 |
|
|
Kapitel 17 – Klassen und Methoden |
217 |
|
|
Objektorientierte Programmierung |
217 |
|
|
Objekte ausgeben |
218 |
|
|
Noch ein Beispiel |
219 |
|
|
Ein komplizierteres Beispiel |
220 |
|
|
init-Methode |
221 |
|
|
Methode __str__ |
221 |
|
|
Operator-Überladung |
222 |
|
|
Dynamische Bindung |
223 |
|
|
Polymorphismus |
224 |
|
|
Debugging |
225 |
|
|
Schnittstelle und Implementierung |
226 |
|
|
Glossar |
227 |
|
|
Übungen |
227 |
|
|
Kapitel 18 – Vererbung |
231 |
|
|
Karten-Objekte |
231 |
|
|
Klassenattribute |
232 |
|
|
Karten vergleichen |
234 |
|
|
Stapel |
235 |
|
|
Kartenstapel ausgeben |
235 |
|
|
Hinzufügen, entfernen, mischen und sortieren |
236 |
|
|
Vererbung |
237 |
|
|
Klassendiagramme |
239 |
|
|
Debugging |
240 |
|
|
Datenkapselung |
241 |
|
|
Glossar |
242 |
|
|
Übungen |
243 |
|
|
Kapitel 19 – Fallstudie: Tkinter |
247 |
|
|
GUI |
247 |
|
|
Buttons und Callbacks |
248 |
|
|
Canvas-Widgets |
249 |
|
|
Koordinatensequenzen |
250 |
|
|
Weitere Widgets |
251 |
|
|
Widgets packen |
252 |
|
|
Menüs und Callables |
255 |
|
|
Bindung |
256 |
|
|
Debugging |
258 |
|
|
Glossar |
259 |
|
|
Übungen |
260 |
|
|
Anhang A – Debugging |
263 |
|
|
Syntaxfehler |
263 |
|
|
Ich mache immer wieder Änderungen, sehe aber keinen Unterschied |
264 |
|
|
Laufzeitfehler |
265 |
|
|
Mein Programm macht absolut gar nichts |
265 |
|
|
Mein Programm hängt |
265 |
|
|
Ich erhalte eine Ausnahme, wenn ich das Programm ausführe |
267 |
|
|
Ich habe so viele print-Anweisungen eingefügt, dass mich die Ausgaben überfordern |
268 |
|
|
Semantische Fehler |
269 |
|
|
Mein Programm funktioniert nicht |
269 |
|
|
Ich habe einen großen und haarigen Ausdruck, der nicht macht, was er soll |
270 |
|
|
Eine Funktion oder Methode liefert nicht den erwarteten Rückgabewert |
271 |
|
|
Ich komme wirklich nicht weiter und brauche Hilfe |
271 |
|
|
Nein, ich brauche wirklich Hilfe |
272 |
|
|
Anhang B – Algorithmenanalyse |
273 |
|
|
Wachstumsordnung |
274 |
|
|
Analyse grundlegender Python-Operationen |
276 |
|
|
Analyse von Suchalgorithmen |
278 |
|
|
Hashtabellen |
279 |
|
|
Anhang C – Lumpy |
285 |
|
|
Zustandsdiagramm |
286 |
|
|
Stapeldiagramm |
287 |
|
|
Objektdiagramme |
288 |
|
|
Funktions- und Klassenobjekte |
290 |
|
|
Klassendiagramme |
291 |
|
|
Index |
295 |
|