Inhalt | 9 |
Vorwort | 17 |
Was ist Programmieren? | 17 |
Python – eine Sprache für uns und den Computer | 18 |
Wozu soll ich Programmieren lernen? | 19 |
Warum Python? | 20 |
Die lustigen Sachen | 21 |
Das ist neu in der zweiten Auflage | 22 |
Danksagungen | 23 |
Danksagungen für die zweite Auflage | 24 |
Über dieses Buch | 25 |
Was du brauchst | 25 |
Was du nicht brauchst | 26 |
Carter sagt | 27 |
An Eltern und Lehrer | 28 |
1 Erste Schritte | 29 |
Python installieren | 29 |
Python mit IDLE starten | 31 |
Anweisungen bitte | 32 |
Mit Python interagieren | 34 |
Programmierzeit | 36 |
Das erste Programm ausführen | 37 |
Wenn etwas schiefgeht | 38 |
Dein zweites Programm | 41 |
2 Merk’s dir – Speicher und Variablen | 44 |
Eingabe, Verarbeitung, Ausgabe | 44 |
Namen | 46 |
Was ist ein Name? | 50 |
Zahlen und Strings | 51 |
Wie „variabel“ sind sie? | 52 |
Das neue Ich | 53 |
3 Einfache Mathematik | 56 |
Die vier Grundrechenarten | 56 |
Operatoren | 59 |
Punktrechnung vor Strichrechnung | 59 |
Zwei weitere Operatoren | 61 |
Sehr große und sehr kleine Zahlen | 63 |
4 Datentypen | 68 |
Typen ändern | 68 |
Mehr Informationen mit type(). | 71 |
Typumwandlungsfehler | 72 |
Anwendung von Typumwandlungen | 72 |
5 Eingabe | 74 |
raw_input(). | 75 |
Der print-Befehl und das Komma | 76 |
Zahlen eingeben | 78 |
Eingabe aus dem Internet | 80 |
6 GUIs – Grafische Benutzeroberflächen | 83 |
Was ist eine GUI? | 83 |
Unsere erste GUI | 83 |
GUI-Eingabe | 85 |
Welches Eis hättest du gerne? | 86 |
Nochmal Zahlen raten | 90 |
Andere GUI-Teile | 91 |
7 Immer diese Entscheidungen | 93 |
Test, Test | 93 |
Einrücken | 95 |
Seh’ ich jetzt schon doppelt? | 96 |
Andere Arten von Tests | 97 |
Was passiert, wenn der Test „falsch“ ergibt? | 98 |
Mehrere Bedingungen testen | 100 |
Das Schlüsselwort „and“ | 101 |
Das Schlüsselwort „or“ | 102 |
Das Schlüsselwort „not“ | 102 |
8 Schleifen | 106 |
Zählschleifen | 106 |
Verwendung von Zählschleifen | 109 |
Eine Abkürzung: range(). | 110 |
Eine Sache des Stils – Namen von Schleifenvariablen | 112 |
Zählen in Schritten | 115 |
Zählen mit Zahlen | 117 |
Da wir gerade dabei sind … | 117 |
Ausstieg aus einer Schleife – break und continue. | 118 |
9 Nur für dich – Kommentare | 122 |
Kommentare hinzufügen | 122 |
Einzeilige Kommentare | 123 |
Zeilenende-Kommentare | 123 |
Mehrzeilige Kommentare | 123 |
Strings mit drei Anführungszeichen | 124 |
Kommentierstil | 125 |
Kommentare in diesem Buch | 125 |
Auskommentieren | 125 |
10 Zeit zum Spielen | 127 |
Skier | 127 |
11 Geschachtelte und variable Schleifen | 132 |
Geschachtelte Schleifen | 132 |
Variable Schleifen | 134 |
Variable, geschachtelte Schleifen | 135 |
Noch mehr variable, geschachtelte Schleifen | 137 |
Verwendung von geschachtelten Schleifen | 138 |
12 Listen und Wörterbücher | 146 |
Was ist eine Liste? | 146 |
Eine Liste erstellen | 147 |
Elemente in eine Liste einfügen | 147 |
Wozu der Punkt? | 148 |
Listen können alles Mögliche speichern | 149 |
Elemente von einer Liste abrufen | 149 |
Listen in Scheiben schneiden: „Slicing“ | 150 |
Elemente ändern | 152 |
Andere Möglichkeiten der Listenerweiterung | 153 |
Elemente aus einer Liste löschen | 155 |
Eine Liste durchsuchen | 156 |
Eine Liste per Schleife durchlaufen | 158 |
Listen sortieren | 158 |
Veränderlich und unveränderlich | 162 |
Listen von Listen: Tabellen | 163 |
Wörterbücher | 166 |
13 Funktionen | 173 |
Funktionen – die Bausteine | 173 |
Eine Funktion aufrufen | 175 |
Argumente an eine Funktion übergeben | 177 |
Funktionen mit mehreren Argumenten | 179 |
Funktionen, die einen Wert zurückgeben | 181 |
Geltungsbereich von Variablen | 183 |
Globale Variablen erzwingen | 186 |
Tipps zur Benennung von Variablen | 187 |
14 Objekte | 189 |
Objekte im wirklichen Leben | 190 |
Objekte in Python | 190 |
Objekt = Attribute + Methoden | 191 |
Was soll der Punkt? | 192 |
Objekte erstellen | 192 |
Eine Beispielklasse – HotDog | 198 |
Die Daten verbergen | 202 |
Polymorphismus und Vererbung | 203 |
Vorausdenken | 205 |
15 Module | 208 |
Was ist ein Modul? | 208 |
Warum Module verwenden? | 208 |
Eimerweise Legosteine | 209 |
Wie werden Module erstellt? | 209 |
Wie werden Module verwendet? | 210 |
Namensräume | 211 |
Standardmodule | 214 |
16 Grafik | 218 |
Hilfe holen – Pygame | 218 |
Ein Pygame-Fenster | 218 |
In das Fenster zeichnen | 220 |
Einzelne Pixel | 230 |
Bilder | 235 |
Jetzt kommt Bewegung in die Sache! | 237 |
Animation | 238 |
Weichere Animationen | 240 |
Den Ball abprallen lassen | 241 |
Den Ball umbrechen | 244 |
17 Sprites und Kollisionserkennung | 247 |
Sprites | 247 |
Peng! Kollisionserkennung | 253 |
Die Zeit messen | 257 |
18 Eine neue Eingabeart: Ereignisse | 262 |
Ereignisse | 262 |
Tastaturereignisse | 264 |
Mausereignisse | 269 |
Timer-Ereignisse | 271 |
Zeit für noch ein Spiel: PyPong | 274 |
19 Sound | 286 |
Pygame hilft – mit dem mixer. | 286 |
Sounds erzeugen oder Sounds abspielen | 287 |
Sounds abspielen | 287 |
Lautstärke regeln | 290 |
Musik wiederholen | 292 |
Sounds für PyPong | 293 |
Noch mehr coole Sounds | 294 |
Musik für PyPong | 297 |
20 Noch mehr GUIs | 302 |
Mit PyQt arbeiten | 302 |
Action in der GUI | 307 |
Die Rückkehr der Ereignishandler | 310 |
Den Button bewegen | 311 |
Weitere nützliche GUIs | 311 |
TempGUI | 312 |
Was steht auf dem Menü? | 318 |
21 Ausgabeformatierung und Strings | 325 |
Neue Zeilen | 326 |
Horizontale Abstände: Tabulatoren | 328 |
Variablen in Strings einfügen | 330 |
Zahlenformatierung | 331 |
Formatieren – der neue Weg | 337 |
Strings und so | 338 |
22 Ein- und Ausgabe mit Dateien | 347 |
Was ist eine Datei? | 348 |
Dateinamen | 348 |
Speicherorte | 349 |
Eine Datei öffnen | 353 |
Eine Datei lesen | 354 |
Text- und Binärdateien | 357 |
Schreiben in eine Datei | 358 |
Daten in Dateien speichern: pickle. | 362 |
Es ist mal wieder Spielzeit: Galgenmännchen | 364 |
23 Das Zufallsprinzip | 372 |
Was ist Zufall? | 372 |
Würfeln | 373 |
Ein Kartenspiel erstellen | 379 |
Crazy Eights – Verrückte Achter | 383 |
24 Computersimulationen | 397 |
Die Realität modellieren | 397 |
Mondlandung | 398 |
Die Zeit festhalten | 403 |
Zeitobjekte | 404 |
Die Zeit in einer Datei speichern | 409 |
Ein virtuelles Haustier | 410 |
25 So entsteht der Skiläufer | 422 |
Der Skiläufer | 422 |
Die Hindernisse | 426 |
26 Python Battle | 436 |
Python Battle | 436 |
Einen Roboter für Python Battle erstellen | 438 |
Ein komplizierterer Roboter | 440 |
Das Koordinatensystem | 441 |
27 Und wie geht's weiter? | 446 |
Für jüngere Programmierer | 446 |
Python | 447 |
Spieleprogrammierung und Pygame | 447 |
Weitere Spieleprogrammierung (aber nicht mit Python) | 448 |
BASIC | 448 |
Apps fürs Handy | 448 |
Schau dich um | 449 |
Anhang A: Regeln für Variablennamen | 450 |
Anhang B: Unterschiede zwischen Python.2 und 3 | 452 |
Anhang C: Lösungen zu den Übungen | 456 |
Verzeichnis der Listings | 488 |
Index | 491 |
Listing.1.1 Unser erstes richtiges Programm | 36 |
Listing.1.2 Zahlen raten | 41 |
Listing.5.1 Einen String mit raw_input() bekommen | 75 |
Listing.5.2 Was tut das Komma? | 76 |
Listing.5.3 Temperaturen umrechnen mit raw_input() | 78 |
Listing.5.4 Eingabe aus einer Datei im Internet | 80 |
Listing.6.1 Eingabe mit Buttons | 86 |
Listing.6.2 Eingabe mit Choicebox | 87 |
Listing.6.3 Eingabe mit Enterbox | 88 |
Listing.6.4 So werden Standardargumente angelegt | 89 |
Listing.6.5 Zahlen raten mit EasyGui | 90 |
Listing.7.1 Verwendung der Vergleichsoperatoren | 98 |
Listing.8.1 Eine ganz einfache for-Schleife | 107 |
Listing.8.2 Bei jedem Durchlauf durch die for-Schleife geschieht etwas Anderes | 108 |
Listing.8.3 Die Achterreihe ausgeben | 109 |
Listing.8.4 Eine Schleife mit range() | 110 |
Listing.8.5 Mit range() das kleine Einmaleins mit 8 erhalten | 112 |
Listing.8.6 Bereit zum Abheben? | 116 |
Listing.8.7 Wer ist ein super Typ? | 117 |
Listing.8.8 Eine Bedingungsschleife (oder while-Schleife) | 118 |
Listing.8.9 Verwendung von continue in einer Schleife | 119 |
Listing.10.1 Skier | 128 |
Listing.11.1 Drei Multiplikationstabellen auf einmal ausgeben | 133 |
Listing.11.2 Eine variable, geschachtelte Schleife | 135 |
Listing.11.3 Sternenblöcke mit doppelt geschachtelten Schleifen | 136 |
Listing.11.4 Eine kniffligere Version der Sternenblöcke | 137 |
Listing.11.5 Schleifenvariablen in geschachtelten Schleifen ausgeben | 137 |
Listing.11.6 Wurstkombinationen | 140 |
Listing.11.7 Das Wurstprogramm mit Kalorienzähler | 143 |
Listing.13.1 Eine Funktion erstellen und benutzen | 174 |
Listing.13.2 Ein Argument an eine Funktion übergeben | 177 |
Listing.13.3 Funktionen mit zwei Argumenten | 180 |
Listing.13.4 Eine Funktion erstellen und verwenden, die einen Wert zurückgibt | 183 |
Listing.13.5 Versuch, eine lokale Variable auszugeben | 184 |
Listing.13.6 Eine globale Variable in einer Funktion verwenden | 185 |
Listing.13.7 Versuch, eine globale Variable in einer Funktion zu ändern | 186 |
Listing.14.1 Eine einfache Ball-Klasse | 192 |
Listing.14.2 Die Ball-Klasse verwenden | 193 |
Listing.14.3 Eine __init__()-Methode hinzufügen | 194 |
Listing.14.4 Mit __str__() die Ausgabe des Objekts ändern | 196 |
Listing.14.5 Der Anfang unseres Hot Dog-Programms | 199 |
Listing.14.6 Die Klasse HotDog mit braten(), zutatHinzufuegen() und __str__() | 200 |
Listing.15.1 Ein Modul erstellen | 209 |
Listing.15.2 Ein Modul verwenden | 210 |
Listing.15.3 Das Programm zum Schlafen schicken | 215 |
Listing.16.1 Ein Pygame-Fenster erstellen | 219 |
Listing.16.2 Das Pygame-Fenster korrekt arbeiten lassen | 219 |
Listing.16.3 Einen Kreis zeichnen | 220 |
Listing.16.4 Der Kreis rückt in die Fenstermitte | 225 |
Listing.16.5 Moderne Kunst mit draw.rect | 228 |
Listing.16.6 Moderne Kunst mit Farbe | 229 |
Listing.16.7 Kurven aus vielen kleinen Rechtecken zeichnen | 231 |
Listing.16.8 Eine durchgehende Sinuskurve | 232 |
Listing.16.9 Das geheimnisvolle Punkteverbinden | 234 |
Listing.16.10 Ein Wasserball-Bild in einem Pygame-Fenster anzeigen | 235 |
Listing.16.11 Wir versuchen, den Wasserball zu bewegen | 238 |
Listing.16.12 Nächster Versuch, einen Wasserball zu bewegen | 239 |
Listing.16.13 Den Wasserball geschmeidig bewegen | 240 |
Listing.16.14 Einen Wasserball abprallen lassen | 242 |
Listing.16.15 Ballspiel in 2-D | 243 |
Listing.16.16 Den Wasserball umbrechen | 244 |
Listing.17.1 Mit Sprites mehrere Bälle auf den Bildschirm laden | 249 |
Listing.17.2 Bälle mithilfe von Sprites bewegen | 252 |
Listing.17.3 Eine Sprite-Gruppe statt einer Liste verwenden | 254 |
Listing.17.4 Clock und get_fps() im Wasserballprogramm | 260 |
Listing.18.1 Das Ball-Programm mit Sprites und uhr.tick() | 265 |
Listing.18.2 Ball mit Aufwärts- und Abwärts-Pfeil | 267 |
Listing.18.3 Den Ball mit einem Timer-Ereignis auf und ab bewegen | 273 |
Listing.18.4 Die erste Version von PyPong | 277 |
Listing.18.5 Das endgültige PyPong-Programm | 282 |
Listing.19.1 Sounds in Pygame ausprobieren | 289 |
Listing.19.2 Musik spielen | 289 |
Listing.19.3 Musik und Sound mit Lautstärkeregelung | 291 |
Listing.19.4 Das Ende des Songs abwarten | 292 |
Listing.19.5 PyPong mit Sound und Musik | 298 |
Listing.20.1 Dieser PyQt-Code ist mindestens nötig | 308 |
Listing.20.2 Einen Ereignishandler für den Button aus Listing.20.1 einfügen | 309 |
Listing.20.3 Programm zur Temperaturumrechnung | 316 |
Listing.20.4 Vollständiges Programm zur Temperaturumrechnung mit Menüs | 321 |
Listing.21.1 Ein Programm, das Quadrat- und Kubikzahlen ausgibt | 329 |
Listing.22.1 Datei öffnen und lesen | 355 |
Listing.22.2 readline() mehrmals verwenden | 356 |
Listing.22.3 Anfügenmodus verwenden | 360 |
Listing.22.4 Schreibmodus für neue Dateien | 360 |
Listing.22.5 Schreibmodus für vorhandene Dateien | 361 |
Listing.22.6 Eine Liste mit pickle in einer Datei speichern | 363 |
Listing.22.7 Dateien mit load() entpickeln | 363 |
Listing.22.8 Das komplette Galgenmännchen-Programm | 368 |
Listing.23.1 Tausendmal würfeln mit dem elfseitigen Würfel | 374 |
Listing.23.2 Tausendmal würfeln mit zwei sechsseitigen Würfeln | 375 |
Listing.23.3 Zehnmal hintereinander Kopf | 378 |
Listing.23.4 Die Klasse Card | 381 |
Listing.23.5 Ein Kartenspiel erstellen | 382 |
Listing.23.6 Die Hauptschleife von Crazy Eights | 385 |
Listing.23.7 Das Blatt des Spielers anzeigen | 389 |
Listing.23.8 Der Spielzug des Spielers | 390 |
Listing.23.9 Neue Farbe erfragen, wenn der Spieler eine 8 ablegt | 391 |
Listing.23.10 Der Spielzug des Computers | 392 |
Listing.23.11 Die Hauptschleife inklusive Punktständen | 394 |
Listing.24.1 Mondlandung | 400 |
Listing.24.2 Zeitdifferenzen messen: Tippgeschwindigkeit | 408 |
Listing.24.3 Die Zeit mit pickle in einer Datei speichern | 410 |
Listing.24.4 VirtuellesHaustier.py | 416 |
Listing.25.1 Das Skiläufer-Spiel erstellen – nur der Skiläufer | 425 |
Listing.25.2 Das Skiläufer-Spiel erstellen – nur die Hindernisse | 429 |
Listing.25.3 Skiläufer und Hindernisse zusammen | 431 |
Listing.26.1 Die vollständige Roboter-KI | 440 |
Listing.26.2 Ein komplizierterer Roboter | 443 |