Auf einen Blick Auf einen Blick 1 Einführung ............................................................................................. 17 2 Erste Schritte ......................................................................................... 23 3 Programmierkurs ................................................................................. 35 4 Datentypen ............................................................................................ 83 5 Weiterführende Programmierung ................................................. 143 6 Objektorientierte Programmierung .............................................. 203 7 Verschiedene Module ........................................................................ 225 8 Dateien .................................................................................................... 257 9 Internet ................................................................................................... 303 10 Datenbanken ......................................................................................... 339 11 Benutzeroberflächen .......................................................................... 371 12 Unterschiede in Python 2 .................................................................. 445 13 Raspberry Pi ........................................................................................... 449 Inhalt Inhalt 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 2.1.2 2.1.3 2.1.4 2.1.5 Eingabe von Berechnungen .................................................... Addition, Subtraktion und Multiplikation .......................... Division, Ganzzahldivision und Modulo ............................. Rangfolge und Klammern ........................................................ Variablen und Zuweisung ....................................................... 23 24 24 25 26 Erstes Programm ........................................................................................... 27 2.2.1 2.2.2 28 28 2.2 2.3 Hallo Welt ..................................................................................... Eingabe eines Programms ....................................................... Speichern und Ausführen ......................................................................... 28 2.3.1 2.3.2 2.3.3 2.3.4 Speichern ....................................................................................... Ausführen unter Windows ...................................................... Ausführen unter Ubuntu Linux und unter macOS .......... Kommentare ................................................................................ 29 29 31 32 2.3.5 2.3.6 Verkettung von Ausgaben ....................................................... Lange Ausgaben .......................................................................... 32 33 5 Inhalt Inhalt 3 3.1 3.2 Programmierkurs Ein Spiel programmieren .......................................................................... 35 3.1.1 35 Der Ablauf des Spiels ................................................................ Variablen und Operatoren ....................................................................... 36 3.2.1 3.2.2 3.2.3 3.2.4 3.2.5 Berechnung und Zuweisung .................................................. Eingabe einer Zeichenkette .................................................... Eingabe einer Zahl ..................................................................... Spiel, Version mit Eingabe ...................................................... Zufallszahlen ............................................................................... 36 37 37 38 40 Verzweigungen ............................................................................................. 41 3.3.1 3.3.2 3.3.3 3.3.4 3.3.5 3.3.6 3.3.7 3.3.8 Vergleichsoperatoren ............................................................... Einfache Verzweigung ............................................................. Spiel, Version mit Bewertung der Eingabe ........................ Mehrfache Verzweigung ......................................................... Logische Operatoren ................................................................. Mehrere Vergleichsoperatoren ............................................. Spiel, Version mit genauer Bewertung der Eingabe ....... Rangfolge der Operatoren ...................................................... 41 42 43 44 46 48 49 50 Schleifen ........................................................................................................... 51 3.4.1 3.4.2 3.4.3 3.4.4 3.4.5 3.4.6 3.4.7 for-Schleife ................................................................................... Schleifenabbruch mit »break« .............................................. Geschachtelte Kontrollstrukturen ....................................... Spiel, Version mit for-Schleife und Abbruch ..................... for-Schleife mit »range()« ....................................................... Spiel, Version mit »range()« ................................................... while-Schleife .............................................................................. 51 52 53 54 55 59 60 3.4.8 Spiel, Version mit while-Schleife und Zähler .................... 61 3.5 Entwicklung eines Programms .............................................................. 63 3.6 Fehler und Ausnahmen ............................................................................. 64 3.3 3.4 3.6.1 3.6.2 3.6.3 3.6.4 3.6.5 6 35 Basisprogramm .......................................................................... Fehler abfangen ......................................................................... Eingabe wiederholen ................................................................ Exkurs: Schleifenfortsetzung mit »continue« .................. Spiel, Version mit Ausnahmebehandlung ......................... 64 65 67 68 69 3.7 Funktionen und Module ............................................................................ 71 3.7.1 3.7.2 3.7.3 3.7.4 3.7.5 Einfache Funktionen .................................................................. Funktionen mit einem Parameter ......................................... Funktionen mit mehreren Parametern ............................... Funktionen mit Rückgabewert .............................................. Spiel, Version mit Funktionen ................................................ 72 73 75 75 76 3.8 Das fertige Spiel ............................................................................................ 78 4 Datentypen 83 Zahlen ................................................................................................................ 83 4.1.1 4.1.2 4.1.3 4.1.4 4.1.5 4.1.6 4.1.7 4.1.8 4.1.9 Ganze Zahlen ............................................................................... Zahlen mit Nachkommastellen ............................................. Typ ermitteln ................................................................................ Operator ** .................................................................................... Rundung und Konvertierung .................................................. Winkelfunktionen ...................................................................... Weitere mathematische Funktionen ................................... Bitoperatoren ............................................................................... Brüche ............................................................................................. 83 85 86 87 87 89 90 91 94 Zeichenketten ................................................................................................ 97 4.1 4.2 4.2.1 4.2.2 4.2.3 4.2.4 4.2.5 4.2.6 4.2.7 4.3 4.4 Eigenschaften .............................................................................. Operatoren ................................................................................... Operationen ................................................................................. Funktionen .................................................................................... Umwandlung einer Zeichenkette in eine Zahl ................. Umwandlung einer Zahl in eine Zeichenkette ................. Datentyp »bytes« ....................................................................... 97 98 100 102 106 108 108 Listen .................................................................................................................. 109 4.3.1 4.3.2 4.3.3 Eigenschaften .............................................................................. Operatoren ................................................................................... Funktionen und Operationen ................................................. 110 112 112 Tupel ................................................................................................................... 116 4.4.1 4.4.2 4.4.3 116 116 118 Eigenschaften .............................................................................. Operationen ................................................................................. Tupel entpacken ......................................................................... 7 Inhalt Inhalt 4.5 4.6 4.7 4.8 120 4.5.1 4.5.2 4.5.3 4.5.4 Eigenschaften .............................................................................. Operatoren und Funktionen .................................................. Views .............................................................................................. Vergleiche ..................................................................................... 120 122 123 125 Mengen, Sets ................................................................................................. 126 4.6.1 4.6.2 4.6.3 4.6.4 Eigenschaften .............................................................................. Funktionen ................................................................................... Operatoren ................................................................................... Frozenset ...................................................................................... 126 127 128 130 Wahrheitswerte und Nichts .................................................................... 131 4.7.1 4.7.2 Wahrheitswerte True und False ............................................ Nichts, None ................................................................................ 132 135 Referenz, Identität und Kopie ................................................................ 137 4.8.1 4.8.2 4.8.3 137 139 140 Referenz und Identität ............................................................. Ressourcen sparen ..................................................................... Objekte kopieren ........................................................................ 5 Weiterführende Programmierung 143 5.1 Allgemeines .................................................................................................... 143 5.1.1 5.1.2 5.1.3 5.1.4 5.1.5 Kombinierte Zuweisungsoperatoren .................................. Programmzeile in mehreren Zeilen ..................................... Eingabe mit Hilfestellung ....................................................... Anweisung »pass« ..................................................................... Funktionen »eval()« und »exec()« ........................................ 143 145 146 147 149 Ausgabe und Formatierung .................................................................... 150 5.2.1 5.2.2 5.2.3 5.2.4 Funktion »print()« ...................................................................... Formatierung mit String-Literalen ....................................... Formatierung mit »format()« ................................................ Formatierung wie in C .............................................................. 150 152 156 158 Conditional Expression .............................................................................. 159 5.2 5.3 8 Dictionarys ...................................................................................................... 5.4 Iterierbare Objekte ...................................................................................... 160 5.4.1 5.4.2 5.4.3 Funktion »zip()« ........................................................................... Funktion »map()« ....................................................................... Funktion »filter()« ....................................................................... 161 161 164 5.5 List Comprehension ..................................................................................... 164 5.6 Fehler und Ausnahmen .............................................................................. 167 5.6.1 5.6.2 5.6.3 5.6.4 5.6.5 5.6.6 Allgemeines .................................................................................. Syntaxfehler ................................................................................. Laufzeitfehler ............................................................................... Logische Fehler und Debugging ............................................ Fehler erzeugen ........................................................................... Unterscheidung von Ausnahmen ......................................... 167 167 169 169 174 175 Funktionen ...................................................................................................... 177 5.7.1 5.7.2 5.7.3 5.7.4 5.7.5 5.7.6 5.7.7 5.7.8 5.7.9 Variable Anzahl von Parametern .......................................... Benannte Parameter ................................................................. Voreinstellung von Parametern ............................................ Mehrere Rückgabewerte .......................................................... Übergabe von Kopien und Referenzen ................................ Lokal, global .................................................................................. Rekursive Funktionen ................................................................ Lambda-Funktion ....................................................................... Funktionsname als Parameter ............................................... 177 178 179 181 182 185 186 187 188 Eingebaute Funktionen ............................................................................. 189 5.8.1 5.8.2 5.8.3 Funktionen »max()«, »min()« und »sum()« ........................ Funktionen »chr()« und »ord()« ............................................. Funktionen »reversed()« und »sorted()« ............................. 191 192 193 5.9 Statistikfunktionen ..................................................................................... 194 5.10 Eigene Module ............................................................................................... 196 5.10.1 5.10.2 Eigene Module erzeugen ......................................................... Eigene Module verwenden ...................................................... 197 197 Parameter der Kommandozeile ............................................................. 199 5.11.1 5.11.2 5.11.3 199 199 200 5.7 5.8 5.11 Übergabe von Zeichenketten ................................................. Übergabe von Zahlen ................................................................ Beliebige Anzahl von Parametern ......................................... 9 Inhalt Inhalt 6 Objektorientierte Programmierung 7.4 Reguläre Ausdrücke ..................................................................................... 247 7.4.1 7.4.2 Suchen von Teiltexten .............................................................. Ersetzen von Teiltexten ............................................................ 248 252 7.5 Audioausgabe ................................................................................................ 255 8 Dateien 257 6.1 Was ist OOP? .................................................................................................. 203 6.2 Klassen, Objekte und eigene Methoden ........................................... 204 6.3 Konstruktor und Destruktor ................................................................... 206 6.4 Besondere Methoden ................................................................................. 208 6.5 Operatormethoden ..................................................................................... 209 6.6 Referenz, Identität und Kopie ................................................................ 211 8.1 Dateitypen ....................................................................................................... 257 6.7 Vererbung ....................................................................................................... 213 8.2 Öffnen und Schließen einer Datei ......................................................... 258 6.8 Mehrfachvererbung .................................................................................... 216 8.3 Sequenzielle Dateien .................................................................................. 259 6.9 Enumerationen ............................................................................................. 219 6.10 Spiel, objektorientierte Version ............................................................ 220 8.3.1 8.3.2 8.3.3 8.3.4 259 261 266 269 7 Verschiedene Module 225 7.1 Datum und Zeit ............................................................................................. 225 7.1.1 7.1.2 7.1.3 7.1.4 7.1.5 225 227 229 230 232 7.1.6 7.1.7 7.2 7.3 10 203 Ausgabe der Zeit mit »localtime()« ...................................... Ausgabe der Zeit mit »strftime()« ........................................ Zeitangabe erzeugen ................................................................ Mit Zeitangaben rechnen ....................................................... Programm anhalten .................................................................. 8.4 8.5 8.6 Sequenzielles Schreiben ........................................................... Sequenzielles Lesen ................................................................... CSV-Datei schreiben .................................................................. CSV-Datei lesen ........................................................................... Dateien mit festgelegter Struktur ........................................................ 271 8.4.1 8.4.2 8.4.3 Formatiertes Schreiben ............................................................ Lesen an beliebiger Stelle ........................................................ Schreiben an beliebiger Stelle ................................................ 271 272 274 Serialisierung .................................................................................................. 276 8.5.1 8.5.2 Objekte in Datei schreiben ...................................................... Objekte aus Datei lesen ............................................................ 276 278 Bearbeitung mehrerer Dateien .............................................................. 280 8.6.1 8.6.2 Funktion »glob.glob()« .............................................................. Funktion »os.scandir()« ............................................................. 280 281 Spiel, Version mit Zeitmessung ............................................ Spiel, objektorientierte Version mit Zeitmessung .......... 233 235 Container »double-ended queue« ....................................................... 236 8.7 Informationen über Dateien ................................................................... 282 7.2.1 7.2.2 Operationen ................................................................................. Veränderungen ........................................................................... 237 239 8.8 Dateien und Verzeichnisse verwalten ................................................ 284 Multithreading .............................................................................................. 241 7.3.1 7.3.2 7.3.3 7.3.4 7.3.5 241 241 243 244 246 Wozu dient Multithreading? ................................................. Erzeugung eines Threads ........................................................ Identifizierung eines Threads ................................................ Gemeinsame Daten und Objekte ......................................... Threads und Exceptions .......................................................... 8.9 8.10 Beispielprojekt Morsezeichen ................................................................. 285 8.9.1 8.9.2 8.9.3 285 287 288 Morsezeichen aus Datei lesen ................................................ Ausgabe auf dem Bildschirm .................................................. Ausgabe mit Tonsignalen ........................................................ Spiel, Version mit Highscore-Datei ....................................................... 290 8.10.1 291 Eingabebeispiel ........................................................................... 11 Inhalt Inhalt 8.10.2 8.10.3 Aufbau des Programms ........................................................... Code des Programms ................................................................ 291 292 8.11 Spiel, objektorientierte Version mit Highscore-Datei ................. 297 9 Internet 303 9.1 Laden und Senden von Internetdaten ................................................ 303 9.1.1 9.1.2 9.1.3 Daten lesen .................................................................................. Daten kopieren ........................................................................... Daten senden per »GET« ......................................................... 304 306 307 9.1.4 Daten senden per »POST« ....................................................... 310 Webserver-Programmierung .................................................................. 312 9.2.1 9.2.2 9.2.3 9.2.4 Erstes Programm ........................................................................ Beantworten einer Benutzereingabe .................................. Formularelemente mit mehreren Werten ........................ Typen von Formularelementen ............................................. 313 314 317 320 9.3 Browser aufrufen ......................................................................................... 326 9.4 Spiel, Version für das Internet ............................................................... 326 9.4.1 9.4.2 9.4.3 327 328 329 9.2 12 Eingabebeispiel ........................................................................... Aufbau des Programms ........................................................... Code des Programms ................................................................ 10 Datenbanken 339 10.1 Aufbau von Datenbanken ........................................................................ 339 10.2 SQLite ................................................................................................................ 340 10.2.1 10.2.2 10.2.3 10.2.4 10.2.5 10.2.6 10.2.7 10.2.8 341 343 344 347 349 350 352 354 Datenbank, Tabelle und Datensätze ................................... Daten anzeigen ........................................................................... Daten auswählen, Operatoren .............................................. Operator »LIKE« .......................................................................... Sortierung der Ausgabe ........................................................... Auswahl nach Eingabe ............................................................. Datensätze ändern .................................................................... Datensätze löschen ................................................................... 10.3 10.4 SQLite auf dem Webserver ....................................................................... 355 MySQL ................................................................................................................ 357 10.4.1 10.4.2 10.4.3 10.4.4 10.4.5 XAMPP und Connector/Python .............................................. Datenbank erzeugen ................................................................. Tabelle anlegen ........................................................................... Datensätze anlegen ................................................................... Daten anzeigen ........................................................................... 358 359 360 362 363 10.5 Spiel, Version mit Highscore-Datenbank ........................................... 364 10.6 Spiel, objektorientierte Version mit Highscore-Datenbank ..... 367 11 Benutzeroberflächen 371 Einführung ....................................................................................................... 371 11.1.1 11.1.2 372 374 11.1 11.2 11.3 Eine erste GUI-Anwendung ..................................................... Ändern von Eigenschaften ...................................................... Widget-Typen ................................................................................................ 375 11.2.1 11.2.2 11.2.3 11.2.4 11.2.5 11.2.6 11.2.7 11.2.8 11.2.9 Anzeigefeld, Label ....................................................................... Einzeilige Textbox, Entry .......................................................... Versteckte Eingabe ..................................................................... Mehrzeilige Textbox, Text ....................................................... Scrollende Textbox, ScrolledText .......................................... Listbox mit einfacher Auswahl .............................................. Listbox mit mehrfacher Auswahl .......................................... Scrollbar, scrollende Widgets ................................................. Radiobuttons zur Auswahl, Widget-Variablen ................. 375 378 380 382 384 386 388 389 391 11.2.10 11.2.11 11.2.12 11.2.13 11.2.14 Radiobuttons zur Auswahl und Ausführung .................... Checkbuttons zur mehrfachen Auswahl ............................ Schieberegler, Scale ................................................................... Mausereignisse ........................................................................... Tastaturereignisse ...................................................................... 394 395 397 400 403 Geometrische Anordnung von Widgets ............................................. 405 11.3.1 11.3.2 11.3.3 11.3.4 406 408 412 414 Frame-Widget, Methode »pack()« ........................................ Ein einfacher Taschenrechner ................................................ Methode »grid()« ........................................................................ Methode »place()«, absolute Koordinaten ......................... 13 Inhalt Inhalt 11.3.5 11.3.6 11.3.7 11.4 11.5 416 418 419 Menüs, Messageboxen und Dialogfelder ......................................... 423 11.4.1 11.4.2 11.4.3 11.4.4 11.4.5 Menüleisten ................................................................................. Kontextmenüs ............................................................................ Messageboxen ............................................................................ Eigene Dialogfelder ................................................................... Ausführung verhindern ........................................................... 424 429 431 436 438 Spiel, GUI-Version ........................................................................................ 439 12 Unterschiede in Python 2 445 12.1 Neue und geänderte Eigenschaften .................................................... 445 12.1.1 12.1.2 Auffällige Änderungen ............................................................. Weitere Änderungen ................................................................ 445 446 12.2 Konvertierung von Python 2 zu Python 3 ......................................... 447 13 Raspberry Pi 449 13.1 13.2 13.3 14 Methode »place()«, relative Koordinaten .......................... Absolute Veränderung von Koordinaten ........................... Relative Veränderung von Koordinaten ............................. Einzelteile und Installation ...................................................................... 449 13.1.1 13.1.2 13.1.3 13.1.4 13.1.5 Einzelteile ..................................................................................... Sicherheit und Schäden ........................................................... Zusammenbau ............................................................................ Installation von Raspbian ........................................................ Start von Raspbian .................................................................... 449 450 451 451 452 Elektronische Schaltungen ...................................................................... 453 13.2.1 13.2.2 13.2.3 13.2.4 Gleichspannungs-Stromkreis ................................................ Spannung ist Information ....................................................... Bauelemente und Ausrüstung .............................................. Widerstände ................................................................................ 453 454 455 455 Aufbau des GPIO-Anschlusses ................................................................ 457 13.4 Lüftersteuerung ............................................................................................ 459 13.4.1 13.4.2 13.4.3 13.4.4 13.4.5 13.4.6 13.4.7 13.4.8 459 459 460 461 462 463 464 465 Temperatur ermitteln ............................................................... Leuchtdioden ............................................................................... Leuchtdiode ansteuern ............................................................. Leuchtdiode blinken lassen ..................................................... Mehrere Leuchtdioden ............................................................. Lüfter ansteuern ......................................................................... Temperaturabhängige Lüftersteuerung ............................. Temperatur in Datenbank speichern ................................... Anhang 469 A.1 Installation von XAMPP ............................................................................. 469 A.1.1 A.1.2 A.1.3 Installation von XAMPP unter Windows ............................ Installation von XAMPP unter Ubuntu Linux .................... Installation von XAMPP unter macOS ................................. 469 470 470 UNIX-Befehle .................................................................................................. 471 A.2.1 A.2.2 A.2.3 471 472 473 A.2 A.3 Inhalt eines Verzeichnisses ..................................................... Verzeichnis anlegen, wechseln und löschen ..................... Datei kopieren, verschieben und löschen .......................... Lösungen .......................................................................................................... 474 A.3.1 A.3.2 A.3.3 Lösungen zu Kapitel 2 ............................................................... Lösungen zu Kapitel 3 ............................................................... Lösungen zu Kapitel 5 ............................................................... 474 474 479 Index .................................................................................................................................... 481 15