|
Der Autor |
5 |
|
|
Inhaltsverzeichnis |
6 |
|
|
Einführung |
22 |
|
|
Für wen ist dieses Buch? |
23 |
|
|
Wir wissen, was Sie gerade denken. |
24 |
|
|
Lies mich! |
29 |
|
|
Sie müssen Python installieren |
31 |
|
|
Ein paar Worte zur Organisation Ihres Codes |
33 |
|
|
Danksagungen* |
34 |
|
|
Das Gutachterteam |
35 |
|
|
Über den Übersetzer dieses Buchs |
36 |
|
|
1 Rechnerisch denken |
38 |
|
|
Immer der Reihe nach |
39 |
|
|
Wie Programmieren funktioniert |
43 |
|
|
Sprechen wir überhaupt die gleiche Sprache? |
44 |
|
|
Die Welt der Programmiersprachen |
45 |
|
|
Code mit Python schreiben und ausführen |
50 |
|
|
Eine kurze Geschichte von Python |
52 |
|
|
Python auf Herz und Nieren prüfen |
55 |
|
|
Ihre Arbeit speichern |
57 |
|
|
Herzlichen Glückwunsch zu Ihrem ersten Python-Programm! |
58 |
|
|
Phrasendrescher |
62 |
|
|
Den Code in die Maschine bekommen |
63 |
|
|
2 Einfache Werte, Variablen und Typen |
70 |
|
|
Einen Rechner für Hundejahre programmieren |
71 |
|
|
Pseudocode in richtigen Code umwandeln |
73 |
|
|
Schritt 1: Eingaben einsammeln |
74 |
|
|
Wie die input-Funktion funktioniert |
75 |
|
|
Variablen verwenden, um Werte zu erinnern und zu speichern |
75 |
|
|
Benutzereingabe einer Variablen zuweisen |
76 |
|
|
Schritt 2: Weitere Eingaben einsammeln |
76 |
|
|
Zeit, unseren Code auszuführen |
77 |
|
|
Etwas Code eingeben |
80 |
|
|
Ein genauer Blick auf Variablen |
81 |
|
|
Etwas mehr Ausdruck |
82 |
|
|
Variablen sind VARIABEL |
83 |
|
|
Besser leben durch Operatoren-Präzedenz |
84 |
|
|
Rechnen mit Operatoren-Präzedenz |
85 |
|
|
Finger von der Tastatur! |
88 |
|
|
Step 3: Das Alter des Hundes berechnen |
89 |
|
|
Houston, wir haben ein Problem! |
90 |
|
|
Fehler sind menschlich gehören zum Programmieren dazu |
91 |
|
|
Etwas mehr Debugging … |
93 |
|
|
Welcher Python-(Daten-)Typ sind Sie? |
95 |
|
|
Den Code reparieren |
96 |
|
|
Houston, wir sind abgehoben. |
97 |
|
|
Schritt 4: Benutzerfreundliche Ausgaben |
98 |
|
|
3 Boolesche Werte, Entscheidungen und Schleifen |
110 |
|
|
Wollen Sie ein Spiel spielen? |
111 |
|
|
Zuerst ein allgemeines Konzept |
113 |
|
|
Die Wahl des Computers |
114 |
|
|
Wie Zufallszahlen genutzt werden |
115 |
|
|
Vorstellung des booleschen Datentyps |
118 |
|
|
Entscheidungen treffen |
119 |
|
|
Entscheidungen und noch mehr Entscheidungen |
120 |
|
|
Zurück zu Stein, Schere, Papier |
121 |
|
|
Die Wahl des Benutzers ermitteln |
122 |
|
|
Ein Blick auf die Wahl des Benutzers |
125 |
|
|
Den Code zum Finden eines Unentschiedens einbauen |
126 |
|
|
Wer hat gewonnen? |
127 |
|
|
Implementieren wir die Spiellogik |
129 |
|
|
Mehr über boolesche Operatoren |
130 |
|
|
Ist das dokumentiert? |
135 |
|
|
Den Code mit Kommentaren versehen |
136 |
|
|
Wir müssen das Spiel endlich fertigstellen! |
137 |
|
|
Woher wissen wir, ob eine Benutzereingabe ungültig ist? |
138 |
|
|
Den Ausdruck überprüfen und aufräumen |
139 |
|
|
Den Benutzer immer wieder zur Eingabe auffordern |
141 |
|
|
Dinge mehr als einmal tun |
142 |
|
|
Wie die while-Schleife funktioniert |
143 |
|
|
while benutzen, um den Benutzer zur Eingabe aufzufordern, bis eine gültige Auswahl getroffen wurde |
147 |
|
|
Glückwunsch! Sie haben Ihr erstes Spiel programmiert! |
149 |
|
|
4 Listen und Iterationen |
162 |
|
|
Können Sie Bubbles-R-Us helfen? |
163 |
|
|
Mehrere Werte in Python darstellen |
164 |
|
|
Wie Listen funktionieren |
165 |
|
|
Wie lang ist die Liste eigentlich? |
168 |
|
|
Auf das letzte Listenelement zugreifen |
169 |
|
|
Python macht das sogar noch einfacher |
169 |
|
|
Pythons negative Indizes benutzen |
170 |
|
|
In der Zwischenzeit bei Bubbles-R-Us … |
172 |
|
|
Wie man über eine Liste iteriert |
175 |
|
|
Den Ausgabefehler beseitigen |
176 |
|
|
Den Ausgabefehler wirklich beseitigen |
177 |
|
|
Die for-Schleife – der bevorzugte Weg zum Iterieren über eine Liste |
179 |
|
|
Die for-Schleife mit einer Zahlenfolge benutzen |
182 |
|
|
Mehr tun mit Zahlenfolgen |
183 |
|
|
Die Einzelteile zusammensetzen |
185 |
|
|
Eine komplett neue Liste erstellen |
193 |
|
|
Mit Listen geht noch mehr |
194 |
|
|
Probefahrt für den fertigen Bericht |
198 |
|
|
Und die Gewinner sind … |
198 |
|
|
Probefahrt für die kosteneffektivste Seifenblasenmischung |
202 |
|
|
5 Funktionen und Abstraktion |
216 |
|
|
Was stimmt denn mit dem Code nicht? |
218 |
|
|
Einen Codeblock in eine FUNKTION umwandeln |
220 |
|
|
Wir haben eine Funktion erstellt, aber wie können wir sie benutzen? |
221 |
|
|
Aber wie funktioniert das wirklich? |
221 |
|
|
Funktionen können auch Dinge ZURÜCKGEBEN |
229 |
|
|
Funktionen mit Rückgabewerten aufrufen |
230 |
|
|
Ein bisschen Refaktorierung zwischendurch |
232 |
|
|
Den Code ausführen |
233 |
|
|
Den Avatar-Code abstrahieren |
234 |
|
|
Den Körper der get attribute-Funktion schreiben |
235 |
|
|
get_attribute aufrufen |
236 |
|
|
Wir sollten noch etwas mehr über Variablen sprechen … |
238 |
|
|
Den Geltungsbereich von Variablen verstehen |
239 |
|
|
Wenn Variablen an Funktionen übergeben werden … |
240 |
|
|
Die drink_me-Funktion aufrufen |
241 |
|
|
Was ist mit der Verwendung globaler Variablen in Funktionen? |
244 |
|
|
Mehr zu Parametern: Standardwerte und Schlüsselwörter |
247 |
|
|
Wie Standardwerte funktionieren |
247 |
|
|
Geben Sie erforderliche Parameter immer zuerst an! |
248 |
|
|
Argumente mit Schlüsselwörtern verwenden |
249 |
|
|
Wie man diese Optionen einordnen sollte |
249 |
|
|
4, Teil 2, Sortierung und verschachtelte Iteration |
262 |
|
|
Bubble Sort verstehen |
265 |
|
|
Wir beginnen mit Durchgang 1: |
265 |
|
|
Etwas Bubble Sort-Pseudocode |
268 |
|
|
Bubble Sort in Python implementieren |
271 |
|
|
Die Nummern der Seifenblasenmischungen berechnen |
273 |
|
|
6 Text, Strings und Heuristiken |
282 |
|
|
Willkommen zu den Datenwissenschaften |
283 |
|
|
Wie berechnet man einen Lesbarkeitsindex? |
284 |
|
|
Der große Plan |
285 |
|
|
Ein bisschen Pseudocode |
286 |
|
|
Wir brauchen etwas Text zur Analyse |
287 |
|
|
Die Funktion erstellen |
289 |
|
|
Als Erstes brauchen wir die Anzahl der Wörter in unserem Text |
290 |
|
|
Die Anzahl der Sätze berechnen |
294 |
|
|
Die count_sentences-Funktion schreiben |
295 |
|
|
Die Anzahl der Silben zählen – oder: Heuristiken lieben lernen |
301 |
|
|
Die Heuristik vorbereiten |
304 |
|
|
Die Heuristik schreiben |
305 |
|
|
Wie man Vokale zählt |
306 |
|
|
Aufeinanderfolgende Vokale ignorieren |
306 |
|
|
Den Code zum Ignorieren aufeinanderfolgender Vokale schreiben |
307 |
|
|
Die Buchstaben e und y sowie Interpunktionszeichen am Satzende entfernen |
309 |
|
|
Slicing (und Substrings) benutzen |
311 |
|
|
Den heuristischen Code fertigstellen |
313 |
|
|
Die Formel für den Lesbarkeitsindex implementieren |
315 |
|
|
Und noch mehr |
320 |
|
|
7 Module, Methoden, Klassen und Objekte |
328 |
|
|
Ein schneller Rückblick auf Module |
331 |
|
|
Die globale Variable _name_ |
333 |
|
|
analyze.py aktualisieren |
334 |
|
|
analyze.py als Modul benutzen |
336 |
|
|
analyze.py mit Docstrings versehen |
338 |
|
|
Andere Python-Module erforschen |
342 |
|
|
Moment mal. Haben Sie gerade »Schildkröten« gesagt?! |
343 |
|
|
Erschaffen Sie Ihre eigene Schildkröte! |
345 |
|
|
Tierversuche mit Schildkröten |
346 |
|
|
Eine zweite Schildkröte hinzufügen |
348 |
|
|
Was sind diese Schildkröten überhaupt? |
351 |
|
|
Was sind Objekte? |
352 |
|
|
Okay, und was ist eine Klasse? |
353 |
|
|
Eine Klasse ist kein Objekt. Sie wird verwendet, um Objekte zu erzeugen. |
353 |
|
|
Objekte und Klassen verwenden |
355 |
|
|
Worum geht es bei den Methoden und Attributen? |
356 |
|
|
Klassen und Objekte überall |
357 |
|
|
Bereitmachen zum Schildkrötenrennen |
359 |
|
|
Das Spiel planen |
360 |
|
|
Fangen wir mit dem Programmieren an |
361 |
|
|
Das Spiel vorbereiten |
361 |
|
|
Den Setup-Code schreiben |
362 |
|
|
Nicht so schnell! |
363 |
|
|
Das Rennen beginnen |
365 |
|
|
8 Rekursion und Dictionaries |
378 |
|
|
Eine andere Art, Dinge zu berechnen |
379 |
|
|
Kommen wir jetzt zu etwas völlig anderem … |
380 |
|
|
Schreiben wir etwas Code für beide Fälle |
381 |
|
|
Etwas mehr Übung |
384 |
|
|
Rekursion zum Finden von Palindromen benutzen |
385 |
|
|
Einen rekursiven Palindrom-Detektor schreiben |
386 |
|
|
Das Unsoziale Netzwerk |
397 |
|
|
Das Dictionary |
399 |
|
|
Sehen wir, wie ein Dictionary erstellt wird. |
399 |
|
|
Schlüssel und Werte müssen keine Strings sein. |
400 |
|
|
Natürlich können Sie die Schlüssel auch wieder entfernen. |
400 |
|
|
Vielleicht wollen Sie aber zuerst überprüfen, ob er überhaupt existiert. |
400 |
|
|
Kann man über Dictionaries auch iterieren? |
401 |
|
|
Dictionaries für das Unsoziale Netzwerk einsetzen |
403 |
|
|
Aber wie fügen wir weitere Attribute hinzu? |
405 |
|
|
Erinnern Sie sich an das Killer-Feature unseres Unsozialen Netzwerks? |
407 |
|
|
Den unsozialsten Benutzer finden |
408 |
|
|
Können wir uns die Ergebnisse der Funktionsaufrufe nicht einfach merken? |
413 |
|
|
Ein Dictionary zum Speichern der Fibonacci-Ergebnisse |
413 |
|
|
Etwas gegen teure Berechnungen: Memoisation |
414 |
|
|
Ein genauer Blick auf die koch-Funktion |
417 |
|
|
Das Koch-Fraktal eingehend erforschen |
419 |
|
|
9 Dateien speichern und auslesen |
430 |
|
|
Bereit für Crazy Libs? |
431 |
|
|
Wie Crazy Libs funktionieren soll |
433 |
|
|
Schritt 1: Text der Geschichte aus einer Datei lesen |
436 |
|
|
Dateipfade richtig benutzen |
437 |
|
|
Relative Pfade |
437 |
|
|
Absolute Pfade |
438 |
|
|
Oh, und vergessen Sie nicht, wieder aufzuräumen, wenn Sie fertig sind. |
439 |
|
|
Dateien im Python-Code lesen |
440 |
|
|
Jetzt hör schon auf! |
443 |
|
|
Verwendung der readline-Methode am Dateiobjekt |
444 |
|
|
Woher wissen wir, wann die letzte Zeile gelesen wurde? |
446 |
|
|
Eine Crazy Lib-Schablone einlesen |
447 |
|
|
Den Schablonentext verarbeiten |
448 |
|
|
Den Bug mit einer neuen Stringmethode beseitigen |
450 |
|
|
Den Bug tatsächlich beheben |
451 |
|
|
Der eine oder andere Code hat echte Probleme |
452 |
|
|
Mit Ausnahmen umgehen |
454 |
|
|
Ausdrücklich mit Ausnahmen umgehen |
455 |
|
|
Crazy Libs aktualisieren, um mit Ausnahmen umzugehen |
457 |
|
|
Unser letzter Schritt: Das Crazy Lib speichern |
458 |
|
|
Den Rest des Code aktualisieren |
458 |
|
|
10 Web-APIs benutzen |
472 |
|
|
Erweitern Sie Ihre Reichweite mit Web-APIs |
473 |
|
|
Die Funktionsweise von Web-APIs |
474 |
|
|
Alle Web-APIs besitzen eine Webadresse |
475 |
|
|
Zeit für ein schnelles Upgrade |
478 |
|
|
Das Upgrade durchführen |
479 |
|
|
Jetzt brauchen wir nur noch eine gute Web-API ... |
480 |
|
|
Ein genauerer Blick auf die API |
481 |
|
|
Web-APIs verwenden JSON für die Rückgabe der Daten |
482 |
|
|
Sehen wir uns das requests-Modul noch einmal an |
484 |
|
|
Die Einzelteile zusammensetzen: einen Request an Open Notify verschicken |
486 |
|
|
JSON in Python verarbeiten |
487 |
|
|
Das JSON-Modul zum Auslesen der ISS-Daten benutzen |
488 |
|
|
Wir brauchen etwas mehr Grafik |
489 |
|
|
Das screen-Objekt |
490 |
|
|
Wir benutzen eine Schildkröte, um die ISS darzustellen |
492 |
|
|
Schildkröten können auch wie Weltraumstationen aussehen |
493 |
|
|
Vergessen Sie die ISS. Wo sind WIR? |
494 |
|
|
Den ISS-Code fertigstellen |
495 |
|
|
11 Widgets, Events und emergentes Verhalten |
504 |
|
|
Willkommen in der WUNDERVOLLEN WELT des KÜNSTLICHEN LEBENS |
505 |
|
|
Eine genauerer Blick auf das Spiel des Lebens |
506 |
|
|
Was wir bauen werden |
509 |
|
|
Haben wir das richtige Design? |
510 |
|
|
Das Datenmodell (Model) entwickeln |
514 |
|
|
Das Raster im Code abbilden |
514 |
|
|
Eine Generation des Spiels des Lebens berechnen |
515 |
|
|
Das Schicksal aller Zellen berechnen |
515 |
|
|
Den Model-Code fertigstellen |
519 |
|
|
Den View erstellen |
522 |
|
|
Das erste Widget erstellen |
523 |
|
|
Die fehlenden Widgets hinzufügen |
524 |
|
|
Das Layout korrigieren |
525 |
|
|
Die Widgets auf einem Gitter anordnen. |
526 |
|
|
Das Gitter-Layout in Code übersetzen |
526 |
|
|
Mit dem Controller weitermachen |
528 |
|
|
Eine Aktualisierungsfunktion einbauen |
528 |
|
|
Bereit für eine neue Art der Programmierung? |
531 |
|
|
Die Funktionsweise des Start/Pause-Buttons |
534 |
|
|
Eine andere Art von Event |
536 |
|
|
Die nötige Technologie haben wir: die after-Methode |
538 |
|
|
Zellen direkt eingeben und bearbeiten |
541 |
|
|
Den grid_view Event-Handler schreiben |
542 |
|
|
Jetzt können wir ein paar Muster hinzufügen. |
543 |
|
|
Einen Handler für das Auswahlmenü schreiben |
544 |
|
|
Die Ladefunktion für das Muster schreiben |
547 |
|
|
Noch weiter! |
554 |
|
|
12 Objektorientierte Programmierung |
560 |
|
|
Die Dinge anders aufteilen |
561 |
|
|
Worum geht es bei der objektorientierten Programmierung überhaupt? |
562 |
|
|
Ihre erste Klasse planen |
564 |
|
|
Ihre erste Klasse schreiben |
565 |
|
|
Wie der Konstruktor funktioniert |
565 |
|
|
Die bark-Methode schreiben |
568 |
|
|
Die Funktionsweise von Methoden |
569 |
|
|
Vererbung nutzen |
571 |
|
|
Die ServiceDog-Klasse implementieren |
572 |
|
|
Ein genauerer Blick auf abgeleitete Klassen |
573 |
|
|
Ein ServiceDog IST EIN Dog |
574 |
|
|
IST-Beziehungen im Code überprüfen |
575 |
|
|
Verhalten überschreiben und erweitern |
579 |
|
|
Noch mehr Fachjargon … |
581 |
|
|
Objekt HAT ein anderes Objekt |
583 |
|
|
Ein Hundehotel entwickeln |
586 |
|
|
Das Hundehotel implementieren |
587 |
|
|
Das Hundhotel renovieren |
590 |
|
|
Das Hotel um ein paar Aktivitäten erweitern |
591 |
|
|
Ich kann alles, was du auch kannst, oder: Polymorphismus |
592 |
|
|
Es ist Zeit, den Hunden das Gassigehen beizubringen |
593 |
|
|
Die Macht der Vererbung |
595 |
|
|
Anhang: Was u?brig bleibt |
612 |
|
|
#1 Listen-Comprehensions |
613 |
|
|
#2 Datum und Uhrzeit |
614 |
|
|
#3 Reguläre Ausdrücke |
615 |
|
|
#4 Andere Datentypen: Tupel |
616 |
|
|
#5 Andere Datentypen: Sets |
617 |
|
|
#6 Serverseitige Programmierung |
618 |
|
|
#7 Lazy Evaluation |
619 |
|
|
#8 Dekoratoren |
620 |
|
|
#9 Higher-Order- und First Class-Funktionen |
621 |
|
|
#10 Eine Menge Bibliotheken |
622 |
|
|
Index |
624 |
|