1406.book Seite 1 Donnerstag, 5. März 2009 1:08 13 Thomas Theis Einstieg in Python 3 1406.book Seite 3 Donnerstag, 5. März 2009 1:08 13 Auf einen Blick 1 Einführung ............................................................................ 13 2 Erste Schritte ........................................................................ 17 3 Programmierkurs ................................................................... 31 4 Datentypen ........................................................................... 77 5 Weiterführende Programmierung .......................................... 131 6 Objektorientierte Programmierung ........................................ 179 7 Neues in Python 3 ................................................................ 195 8 Verschiedene Module ........................................................... 199 9 Dateien ................................................................................. 225 10 Internet ................................................................................ 257 11 Datenbanken ........................................................................ 291 12 Benutzeroberflächen ............................................................. 309 13 Lösungen .............................................................................. 379 3 1406.book Seite 5 Donnerstag, 5. März 2009 1:08 13 Inhalt 1 Einführung ................................................................................ 13 1.1 1.2 1.3 1.4 1.5 2 13 14 14 15 16 Erste Schritte ........................................................................... 17 2.1 2.2 2.3 3 Vorteile von Python ..................................................................... Verbreitung von Python ............................................................... Aufbau des Buchs ........................................................................ Übungen ..................................................................................... Installation von Python ................................................................ Python als Taschenrechner ........................................................... 2.1.1 Eingabe von Berechnungen ............................................. 2.1.2 Addition, Subtraktion und Multiplikation ........................ 2.1.3 Division, Ganzzahldivision und Modulo ........................... 2.1.4 Rangfolge und Klammern ................................................ 2.1.5 Variablen und Zuweisung ................................................ Erstes Programm .......................................................................... 2.2.1 Hallo Welt ...................................................................... 2.2.2 Eingabe eines Programms ................................................ Speichern und Ausführen ............................................................. 2.3.1 Speichern ........................................................................ 2.3.2 Ausführen unter Windows .............................................. 2.3.3 Ausführen unter Linux ..................................................... 2.3.4 Kommentare ................................................................... 2.3.5 Verkettung von Ausgaben ............................................... 2.3.6 Lange Ausgaben .............................................................. 17 17 18 18 19 20 21 21 22 22 22 23 27 27 28 28 Programmierkurs ...................................................................... 31 3.1 3.2 Ein Spiel programmieren .............................................................. 3.1.1 Das fertige Spiel .............................................................. 3.1.2 Der Weg zum fertigen Spiel ............................................. 3.1.3 Mögliche Erweiterungen ................................................. Variablen und Operatoren ........................................................... 3.2.1 Berechnung und Zuweisung ............................................ 3.2.2 Eingabe einer Zeichenkette ............................................. 3.2.3 Eingabe einer Zahl ........................................................... 3.2.4 Spiel, Version mit Eingabe ............................................... 3.2.5 Zufallszahlen ................................................................... 31 31 31 32 32 32 33 33 35 36 5 1406.book Seite 6 Donnerstag, 5. März 2009 1:08 13 Inhalt 3.3 3.4 3.5 3.6 3.7 4 37 38 38 39 40 42 44 45 46 47 47 48 48 50 51 54 56 57 58 58 59 61 62 63 65 66 68 69 70 71 72 Datentypen .............................................................................. 77 4.1 6 Verzweigungen ............................................................................ 3.3.1 Vergleichsoperatoren ...................................................... 3.3.2 Einfache Verzweigung ..................................................... 3.3.3 Spiel, Version mit Bewertung der Eingabe ....................... 3.3.4 Mehrfache Verzweigung .................................................. 3.3.5 Logische Operatoren ....................................................... 3.3.6 Mehrere Vergleichsoperatoren ........................................ 3.3.7 Spiel, Version mit genauer Bewertung der Eingabe .......... 3.3.8 Rangfolge der Operatoren ............................................... Schleifen ...................................................................................... 3.4.1 for-Schleife ..................................................................... 3.4.2 Schleifenabbruch mit break ............................................. 3.4.3 Geschachtelte Kontrollstrukturen .................................... 3.4.4 Spiel, Version mit for-Schleife und Abbruch .................... 3.4.5 for-Schleife mit range() .................................................... 3.4.6 Spiel, Version mit range() ................................................ 3.4.7 while-Schleife ................................................................. 3.4.8 Spiel, Version mit while-Schleife und Zähler .................... Fehler und Ausnahmen ................................................................ 3.5.1 Basisprogramm ................................................................ 3.5.2 Programmabbruch vermeiden ......................................... 3.5.3 Fehler abfangen .............................................................. 3.5.4 Exkurs: Schleifenfortsetzung mit continue ....................... 3.5.5 Spiel, Version mit Ausnahmebehandlung ........................ Funktionen und Module .............................................................. 3.6.1 Einfache Funktionen ........................................................ 3.6.2 Funktionen mit einem Parameter .................................... 3.6.3 Funktionen mit mehreren Parametern ............................. 3.6.4 Funktionen mit Rückgabewert ......................................... 3.6.5 Spiel, Version mit Funktionen ......................................... Das fertige Spiel ........................................................................... Zahlen 4.1.1 4.1.2 4.1.3 4.1.4 4.1.5 4.1.6 ......................................................................................... Ganze Zahlen .................................................................. Zahlen mit Nachkommastellen ........................................ Operatoren ..................................................................... Rundung und Konvertierung ........................................... Modul math .................................................................... Brüche ............................................................................ 77 77 79 80 80 82 83 1406.book Seite 7 Donnerstag, 5. März 2009 1:08 13 Inhalt 4.2 4.3 4.4 4.5 4.6 4.7 4.8 5 Zeichenketten .............................................................................. 4.2.1 Eigenschaften .................................................................. 4.2.2 Operatoren ..................................................................... 4.2.3 Operationen ................................................................... 4.2.4 Funktionen ..................................................................... 4.2.5 Umwandlung von Zeichenkette in Zahl ........................... 4.2.6 Umwandlung von Zahl in Zeichenkette ........................... 4.2.7 Datentyp bytes ................................................................ Listen .......................................................................................... 4.3.1 Eigenschaften .................................................................. 4.3.2 Operatoren ..................................................................... 4.3.3 Funktionen und Operationen .......................................... Tupel ........................................................................................... 4.4.1 Eigenschaften .................................................................. 4.4.2 Operationen ................................................................... 4.4.3 Tupel entpacken ............................................................. Dictionarys .................................................................................. 4.5.1 Eigenschaften .................................................................. 4.5.2 Funktionen ..................................................................... 4.5.3 Views .............................................................................. 4.5.4 Vergleiche ....................................................................... Mengen, Sets ............................................................................... 4.6.1 Eigenschaften .................................................................. 4.6.2 Funktionen ..................................................................... 4.6.3 Operatoren ..................................................................... 4.6.4 Frozenset ........................................................................ Wahrheitswerte und Nichts ......................................................... 4.7.1 Wahrheitswerte True und False ....................................... 4.7.2 Nichts, None ................................................................... Referenz, Identität und Kopie ...................................................... 4.8.1 Referenz und Identität .................................................... 4.8.2 Ressourcen sparen .......................................................... 4.8.3 Objekte kopieren ............................................................ 86 86 87 89 91 94 96 97 98 98 100 101 104 104 104 106 109 109 110 111 113 114 114 115 116 119 120 120 123 125 125 127 128 Weiterführende Programmierung ............................................ 131 5.1 Allgemeines ................................................................................. 5.1.1 Kombinierte Zuweisungsoperatoren ................................ 5.1.2 Anweisung in mehreren Zeilen ........................................ 5.1.3 Eingabe mit Hilfestellung ................................................ 131 131 133 134 7 1406.book Seite 8 Donnerstag, 5. März 2009 1:08 13 Inhalt 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 5.10 8 5.1.4 Anweisung pass .............................................................. 5.1.5 Funktionen eval() und exec() ........................................... Ausgabe und Formatierung .......................................................... 5.2.1 Funktion print() ............................................................... 5.2.2 Formatierte Ausgabe ....................................................... Conditional Expression ................................................................ Iterierbare Objekte ...................................................................... 5.4.1 Funktion zip() .................................................................. 5.4.2 Funktion map() ............................................................... 5.4.3 Funktion filter() ............................................................... List Comprehension ..................................................................... Fehler und Ausnahmen ................................................................ 5.6.1 Allgemeines .................................................................... 5.6.2 Syntaxfehler .................................................................... 5.6.3 Laufzeitfehler .................................................................. 5.6.4 Logische Fehler und Debugging ...................................... 5.6.5 Fehler erzeugen .............................................................. 5.6.6 Unterscheidung von Ausnahmen ..................................... Funktionen .................................................................................. 5.7.1 Variable Anzahl von Parametern ...................................... 5.7.2 Benannte Parameter ........................................................ 5.7.3 Voreinstellung von Parametern ....................................... 5.7.4 Mehrere Rückgabewerte ................................................. 5.7.5 Übergabe von Kopien und Referenzen ............................ 5.7.6 Lokal, global ................................................................... 5.7.7 Lambda-Funktion ............................................................ Eingebaute Funktionen ................................................................ 5.8.1 Übersicht ........................................................................ 5.8.2 Funktionen max(), min() und sum() ................................. 5.8.3 Funktionen chr() und ord() .............................................. 5.8.4 Funktionen reversed() und sorted() ................................. Eigene Module ............................................................................ 5.9.1 Eigene Module erzeugen ................................................. 5.9.2 Eigene Module verwenden .............................................. Parameter der Kommandozeile .................................................... 5.10.1 Übergabe von Zeichenketten ........................................... 5.10.2 Übergabe von Zahlen ...................................................... 5.10.3 Beliebige Anzahl von Parametern .................................... 135 137 138 138 140 144 145 146 146 148 149 151 151 152 153 154 158 159 161 161 162 163 164 165 168 169 170 170 171 172 173 174 174 175 176 176 177 177 1406.book Seite 9 Donnerstag, 5. März 2009 1:08 13 Inhalt 6 Objektorientierte Programmierung ......................................... 179 6.1 6.2 6.3 6.4 6.5 6.6 6.7 6.8 7 7.2 Neue und geänderte Eigenschaften .............................................. 7.1.1 Auffällige Änderungen ..................................................... 7.1.2 Weitere Änderungen ....................................................... Konvertierung von Python 2 zu Python 3 ..................................... 195 195 196 197 Verschiedene Module ............................................................... 199 8.1 8.2 8.3 8.4 9 179 180 182 184 185 187 189 192 Neues in Python 3 .................................................................... 195 7.1 8 Was ist OOP? .............................................................................. Klassen, Objekte und eigene Methoden ....................................... Konstruktor und Destruktor ......................................................... Besondere Methoden .................................................................. Operatormethoden ...................................................................... Referenz, Identität und Kopie ...................................................... Vererbung ................................................................................... Mehrfachvererbung ..................................................................... Datum und Zeit ........................................................................... 8.1.1 Spielen mit Zeitangabe .................................................... 8.1.2 Aktuelle Zeit ausgeben .................................................... 8.1.3 Zeitangabe erzeugen ....................................................... 8.1.4 Mit Zeitangaben rechnen ................................................ 8.1.5 Programm anhalten ......................................................... 8.1.6 Spiel, Version mit Zeitmessung ........................................ Modul collections ........................................................................ Multithreading ............................................................................ 8.3.1 Wozu dient Multithreading? ........................................... 8.3.2 Erzeugung eines Threads ................................................. 8.3.3 Identifizierung eines Threads ........................................... 8.3.4 Gemeinsame Objekte ...................................................... 8.3.5 Threads und Exceptions .................................................. Reguläre Ausdrücke ..................................................................... 8.4.1 Suchen von Teiltexten ..................................................... 8.4.2 Ersetzen von Teiltexten ................................................... 199 199 199 203 204 206 208 209 212 212 212 213 215 216 218 218 222 Dateien ..................................................................................... 225 9.1 9.2 Dateitypen ................................................................................... 225 Öffnen und Schließen einer Datei ................................................ 226 9 1406.book Seite 10 Donnerstag, 5. März 2009 1:08 13 Inhalt 9.3 9.4 9.5 9.6 9.7 9.8 9.9 Sequenzielle Dateien ................................................................... 9.3.1 Sequenzielles Schreiben .................................................. 9.3.2 Sequenzielles Lesen ......................................................... 9.3.3 CSV-Datei schreiben ....................................................... 9.3.4 CSV-Datei lesen .............................................................. Dateien mit festgelegter Struktur ................................................. 9.4.1 Formatiertes Schreiben .................................................... 9.4.2 Lesen an beliebiger Stelle ................................................ 9.4.3 Schreiben an beliebiger Stelle .......................................... Modul pickle ............................................................................... 9.5.1 Objekte in Datei schreiben .............................................. 9.5.2 Objekte aus Datei lesen .................................................. Bearbeitung mehrerer Dateien ..................................................... Informationen über Dateien ......................................................... Dateien und Verzeichnisse verwalten ........................................... Spiel, Version mit Highscore-Datei ............................................... 9.9.1 Eingabebeispiel ............................................................... 9.9.2 Aufbau des Programms ................................................... 9.9.3 Code des Programms ...................................................... 227 227 229 234 236 237 238 239 241 242 242 244 246 247 248 249 250 250 251 10 Internet .................................................................................... 257 10.1 10.2 10.3 10.4 10 Laden und Senden von Internetdaten .......................................... 10.1.1 Lokaler Webserver ....................................................... 10.1.2 Daten lesen .................................................................. 10.1.3 Daten kopieren ............................................................ 10.1.4 Daten senden per GET ................................................. 10.1.5 Daten senden per POST ............................................... Webserver-Programmierung ........................................................ 10.2.1 Erstes Programm .......................................................... 10.2.2 Beantworten einer Benutzereingabe ............................. 10.2.3 Formularelemente mit mehreren Werten ..................... 10.2.4 Typen von Formularelementen ..................................... Browser aufrufen ......................................................................... Spiel, Version für das Internet ...................................................... 10.4.1 Eingabebeispiel ............................................................ 10.4.2 Aufbau des Programms ................................................ 10.4.3 Code des Programms ................................................... 257 257 258 261 261 264 267 267 268 272 274 280 281 281 283 284 1406.book Seite 11 Donnerstag, 5. März 2009 1:08 13 Inhalt 11 Datenbanken ............................................................................ 291 11.1 11.2 11.3 Aufbau von Datenbanken ............................................................ SQLite ......................................................................................... 11.2.1 Datenbank, Tabelle und Datensätze ............................. 11.2.2 Daten anzeigen ............................................................ 11.2.3 Daten auswählen, Operatoren ..................................... 11.2.4 Operator like ............................................................... 11.2.5 Sortierung der Ausgabe ................................................ 11.2.6 Auswahl nach Eingabe ................................................. 11.2.7 Datensätze ändern ....................................................... 11.2.8 Datensätze löschen ...................................................... SQLite auf dem Webserver .......................................................... 291 292 292 295 296 298 300 301 303 305 306 12 Benutzeroberflächen ................................................................ 309 12.1 12.2 12.3 Einführung ................................................................................... 12.1.1 Eine erste GUI-Anwendung .......................................... 12.1.2 Ändern von Eigenschaften ............................................ Widget-Typen .............................................................................. 12.2.1 Anzeigefeld, Label ........................................................ 12.2.2 Einzeilige Textbox, Entry .............................................. 12.2.3 Versteckte Eingabe ...................................................... 12.2.4 Mehrzeilige Textbox, Text ............................................ 12.2.5 Scrollende Textbox, ScrolledText .................................. 12.2.6 Listbox mit einfacher Auswahl ...................................... 12.2.7 Listbox mit mehrfacher Auswahl .................................. 12.2.8 Scrollbar, scrollende Widgets ....................................... 12.2.9 Radio-Buttons zur Auswahl, Widget-Variablen ............. 12.2.10 Radio-Buttons zur Auswahl und Ausführung ................ 12.2.11 Check-Buttons zur mehrfachen Auswahl ...................... 12.2.12 Schieberegler, Scale ..................................................... 12.2.13 Mausereignisse ............................................................ 12.2.14 Tastaturereignisse ........................................................ Geometrische Anordnung von Widgets ........................................ 12.3.1 Frame-Widget, Methode pack() ................................... 12.3.2 Ein einfacher Taschenrechner ....................................... 12.3.3 Methode grid() ............................................................ 12.3.4 Methode place(), absolute Koordinaten ....................... 309 310 311 313 313 316 318 320 322 323 325 327 329 331 333 335 338 341 343 343 346 351 353 11 1406.book Seite 12 Donnerstag, 5. März 2009 1:08 13 Inhalt 12.4 12.3.5 Methode place(), relative Koordinaten ......................... 12.3.6 Absolute Veränderung von Koordinaten ...................... 12.3.7 Relative Veränderung von Koordinaten ........................ Menüs und MessageBoxes ........................................................... 12.4.1 Menüleisten ................................................................. 12.4.2 Kontextmenüs ............................................................. 12.4.3 MessageBoxes .............................................................. 355 357 359 363 363 368 372 13 Lösungen .................................................................................. 379 Index ............................................................................................................ 387 12 1406.book Seite 17 Donnerstag, 5. März 2009 1:08 13 2 Erste Schritte In diesem Kapitel werden Sie Python zum ersten Mal einsetzen – zunächst als Taschenrechner. Außerdem lernen Sie, ein Programm einzugeben, zu speichern und auszuführen. 2.1 Python als Taschenrechner Sie können Python zunächst wie einen einfachen Taschenrechner benutzen. Dies erleichtert Ihnen den Einstieg in Python. 2.1.1 Eingabe von Berechnungen Rufen Sie (unter Windows Vista oder XP) über Start 폷 (Alle) Programme 폷 Python 3.0 폷 IDLE (Python GUI) die nachfolgend dargestellte Entwicklungsumgebung IDLE für Python auf. Sie wird auch Python Shell genannt und kann sowohl als Editor zur Eingabe der Programme als auch als einfacher Taschenrechner genutzt werden. Python Shell Abbildung 2.1 Python-Entwicklungsumgebung IDLE Zur Durchführung kleinerer Berechnungen müssen keine vollständigen Programme geschrieben und gestartet werden. Man kann die gewünschten Rechenoperationen direkt an der Eingabestelle, erkennbar an den Zeichen >>>, eingeben. Eine abschließende Betätigung der Taste (¢) führt zur unmittelbaren Berechnung und Ausgabe des Ergebnisses. 17 Kleinere Berechnungen 1406.book Seite 18 Donnerstag, 5. März 2009 1:08 13 2 Erste Schritte Die dabei angewendeten Rechenregeln finden auch bei der Erstellung von Python-Programmen Verwendung. Es lohnt sich also eine genauere Betrachtung. 2.1.2 Addition, Subtraktion und Multiplikation Im Folgenden werden Eingabe, Verarbeitung und Ausgabe einiger einfacher Berechnungen dargestellt: >>> 41 + 7.5 48.5 >>> 12 - 18 -6 >>> 7 * 3 21 Zur Erläuterung: Operatoren +, -, * 왘 Der Reihe nach werden die Operatoren + (Addition), - (Subtraktion) und * (Multiplikation) eingesetzt. Wenn Sie die Taste (¢) betätigen, erscheint das Ergebnis jeweils in der Zeile darunter. 왘 Als Dezimalzeichen gilt der Punkt, wie bei der ersten Berechnung (41 + 7.5 = 48.5) erkennbar. 2.1.3 Division, Ganzzahldivision und Modulo Es folgen zwei Divisionsaufgaben: >>> 22 / 8 2.75 >>> 22 / -8 -2.75 Zur Erläuterung: Operator / 왘 Der Operator / dient zur normalen Division. Seltener genutzt werden die beiden Operatoren für die Ganzzahldivision und die Modulo-Berechnung. Zunächst zwei Beispiele zur Ganzzahldivision: >>> 22 // 8 2 >>> 22 // -8 -3 18 1406.book Seite 19 Donnerstag, 5. März 2009 1:08 13 Python als Taschenrechner 2.1 Zur Erläuterung: 왘 Der Operator // dient zur Ganzzahldivision. 왘 Bei einer Ganzzahldivision wird das Ergebnis berechnet, indem Operator // 왘 zunächst das exakte Ergebnis inklusive etwaiger Nachkommastellen ermittelt wird und 왘 anschließend die nächstkleinere ganze Zahl ermittelt wird. Ein Beispiel zum Operator % (Modulo): Operator % 22 % 8 6 Zur Erläuterung: 왘 Mit dem Operator % wird der Rest einer Ganzzahldivision berechnet. 왘 Die Ganzzahldivision »22 durch 8« ergibt »2 Rest 6«. Der ModuloOperator liefert also den Rest 6. 2.1.4 Rangfolge und Klammern Es gilt, wie in der Mathematik, Punkt- vor Strichrechnung. Multiplikation und Division haben also Vorrang vor Addition und Subtraktion. Das Setzen von Klammern führt dazu, dass die Ausdrücke innerhalb der Klammern zuerst berechnet werden. Die folgenden Beispiele verdeutlichen die Rangfolge der Operatoren: >>> 7 + 2 * 3 13 >>> (7 + 2) * 3 27 Listing 2.1 Rangfolge der Operatoren Zur Erläuterung: Bei der ersten Rechnung werden zunächst 2 und 3 multipliziert, anschließend wird 7 addiert. Bei der zweiten Rechnung werden zunächst 7 und 2 addiert, anschließend wird mit 3 multipliziert. Übung U0201 Es wird vorausgesetzt, dass Python wie angegeben installiert wurde. Rufen Sie die Entwicklungsumgebung IDLE auf. Ermitteln Sie die Ergebnisse der folgenden vier Aufgaben: 19 Rangfolge 1406.book Seite 20 Donnerstag, 5. März 2009 1:08 13 2 Erste Schritte 왘 12 13 – 5 · 2 + ------6 왘 7 5 -- – -2 4 왘 12 – 5 ⋅ 2----------------------4 왘 1 4 + 3-⎞ ⋅ 2 ⎛1 ⎝ --2- – --4- + -----------8 ⎠ Die Lösungen aller Übungsaufgaben finden Sie im Anhang dieses Buchs. 2.1.5 Variablen und Zuweisung Variablen zuweisen Bisher wurde nur mit Zahlen gerechnet. Python kann, wie jede andere Programmiersprache auch, Zahlen in Variablen speichern, falls sie im Verlauf einer Berechnung mehrmals benötigt werden. Dezimalpunkt Dies soll bei der Umrechnung einer Entfernungsangabe von englischen Meilen in Kilometer gezeigt werden. Für die Umrechnung gilt: 1 Meile = 1609,344 Meter = 1,609344 Kilometer. Beachten Sie, dass Nachkommastellen mit einem Dezimalpunkt abgetrennt werden. >>> mi = 1.609344 >>> 2 * mi 3.2186880000000002 >>> 5 * mi 8.0467200000000005 >>> 22.5 * mi 36.210239999999999 >>> 2.35 * mi 3.7819584000000006 Zur Erläuterung: Variable 왘 Der Umrechnungsfaktor wird zunächst in der Variablen mi gespeichert. Auf diese Weise können mehrere Umrechnungen einfacher nacheinander durchgeführt werden. Anschließend werden die entsprechenden Kilometerwerte für 2 Meilen, 5 Meilen, 22,5 Meilen und für 2,35 Meilen berechnet und ausgegeben. Zuweisung 왘 Die Speicherung des Umrechnungsfaktors geschieht mit einer Zuweisung (mi = 1.609344). Folglich erhält die Variable mi den Wert, der rechts vom Gleichheitszeichen steht (1.609344). 20 1406.book Seite 21 Donnerstag, 5. März 2009 1:08 13 Erstes Programm Zwei Hinweise 2.2 Runden 1. In Python-Variablen können ganze Zahlen, Zahlen mit Nachkommastellen, Zeichenketten (also Texte) und andere Objekte eines Programms mithilfe von Zuweisungen gespeichert werden. 2. Es ist üblich, den Wert in Kilometer so auszugeben, dass auf drei Stellen hinter dem Komma gerundet wird, also auf den Meter genau. Auf eine solche formatierte Ausgabe wird später noch eingegangen. Der Name einer Variablen kann unter Befolgung der folgenden Regeln weitgehend frei gewählt werden: 왘 Er kann aus den Buchstaben a bis z, A bis Z, Ziffern oder dem Zeichen _ (= Unterstrich) bestehen. 왘 Er darf nicht mit einer Ziffer beginnen. 왘 Er darf keinem reservierten Wort der Programmiersprache Python entsprechen. Eine Liste der reservierten Wörter finden Sie auf der vorderen Außenklappe. 왘 Die Groß- und Kleinschreibung ist zu beachten: Namen und Anweisungen müssen stets exakt wie vorgegeben geschrieben werden. Die Namen mi und Mi bezeichnen also verschiedene Variablen. Variablennamen Case sensitive Übung U0202 Für das englische Längenmaß Inch gilt folgende Umrechnung: 1 Inch entspricht 2,54 Zentimetern. Berechnen Sie für die folgenden Angaben den Wert in Zentimeter: 5 Inch, 20 Inch und 92,7 Inch. Vereinfachen Sie Ihre Berechnungen, indem Sie den Umrechnungsfaktor zunächst in einer Variablen speichern. 2.2 Erstes Programm Es soll ein erstes Python-Programm eingegeben, abgespeichert und aufgerufen werden. Dieser Vorgang wird im Folgenden ausführlich erklärt. Die einzelnen Schritte sind später analog bei jedem Python-Programm auszuführen. 2.2.1 Hallo Welt Die Ausgabe Ihres ersten Python-Programms soll lauten: Hallo Welt 21 Eingabe, Verarbeitung, Ausgabe 1406.book Seite 387 Donnerstag, 5. März 2009 1:08 13 Index - (Minus) Set 117 Subtraktion 18 != 38 # 27 #!/usr/bin/python 27 $_GET 263 $_POST 266 % (Prozent) Format 142, 197 Modulo 19, 83 %= 133 & 117 ' 86 * (Stern) Multiplikation 18 Parameter 161 Vervielfachung 87, 100 ** 80 **= 132 *= 132 + (Plus) Addition 18 Verkettung 87, 100 += 132 . 67 / 18 // 19 //= 133 /= 133 : (Doppelpunkt) 38, 56 < Format 143 Python 38 Set 116 SQL 298 <= Python 38 Set 116 SQL 298 <> Python 196 SQL 298 -= 132 = Python 20, 32 SQL 298 == 38, 114, 125 > Format 143 Python 38 Set 116 SQL 298 >= Python 38 Set 116 SQL 298 [ ], Dictionary 110 ^ 117 __add__() 186 __cmp__() 196 __del__() 184 __eq__() 186 __floordiv__() 186 __ge__() 186 __gt__() 186 __init__() 183 __le__() 186 __lt__() 186 __mod__() 186 __mul__() 186 __ne__() 186 __pow__() 186 __str__() 184 __sub__() 186 __truediv__() 186 _thread get_ident() 214 Modul 212 start_new_thread() 212 {} Dictionary 110 Formatierung 141 | 117 100-Dollar-Laptop 14 2to3 197 387 1406.book Seite 388 Donnerstag, 5. März 2009 1:08 13 Index A abs() 86 add() 116 add_cascade() 368 add_checkbutton() 368 add_command() 367 add_radiobutton() 367 add_separator() 367 Aktionsabfrage (Datenbank) 294 anchor 313 and 42 AND (SQL) 298 Antwort-Box (GUI) 372 Anweisung ausführen 137 leere 135 Anzahl Elemente 89 Teiltexte 92 Anzeigefeld (GUI) 313 Apache-Webserver 258 append() 104, 211 appendleft() 211 argv sys 176 Array 98 as 160 ASCII-Zeichen 97 askokcancel() 372 Ausdruck auswerten 137 Ausgabe formatieren 140 Ausnahme 58 Thread 216 Ausnahmebehandlung 60 Ausrichtung (GUI) 313 Auswahlabfrage (Datenbank) 296 Auswahlmenü einfaches (GUI) 323 mehrfaches (GUI) 325 Auswahlmenü (HTML) 275 B b Format 144 Prefix 97 Basisverzeichnis 258 Bedingter Ausdruck 144 388 Bedingung 37, 56, 120 verknüpfen 42 Benannter Parameter 162, 196 Benutzeroberfläche 309 Betrag 86 bg 313 Bild einbinden (GUI) 313 Bild-Widget 316 bin() 78 Binärdaten 97 bind() 340, 342 Bogenmaß 82 bool 120 borderwidth 313 break 48 Breakpoint 157 Breite (GUI) 313 Browser 259 aufrufen 280 Bruch 83 annähern 85 Button tkinter 311 Button-Widget 311 Byte-Literal 97, 261 bytes 97 C callback (GUI) 311 Carriage Return 97 cgi FieldStorage 270 Modul 267, 270 cgi-bin 267, 269 CGI-Skript 267 Standardverzeichnis 269 cgitb enable() 270 Modul 270 checkbox (HTML) 277 Checkbutton-Widget 333 checked (HTML) 277 chr() 172 class 180 clear() 116 close() 227 connection 295 cmd 24 1406.book Seite 389 Donnerstag, 5. März 2009 1:08 13 Index collections deque() 211 Modul 209 command 311, 331, 335 Comma-separated Values 234 commit() connection 294 Compiler 14 Conditional Expression 144 configure() 312 connect() sqlite3 294 connection close() 295 commit() 294 cursor() 294 sqlite3 294 Content-type 268 continue 63 copy deepcopy() 128, 187 Modul 128, 187 copy() 116 copyfile() shutil 249 cos() math 82 count() 104 str 92 CREATE TABLE (SQL) 294 CSV-Datei 234 cursor execute() 294 sqlite3 294 cursor() connection 294 D d (Format) 144 Datei Eigenschaften 247 Ende erkennen 231 festgelegte Struktur 237 formatierte Ausgabe 238 Größe 248 kopieren 249 lesen 229 lesen und schreiben 241 Datei (Forts.) Liste erstellen 246 öffnen 226 Position verändern 239 schließen 227 schreiben 227 Speicherung 225 Typ 225 umbenennen 249 verwalten 248 Zugriffszeitpunkt 248 Dateiendung .csv 234 .py 22 Dateizugriff binärer 225 sequenzieller 225 wahlfreier 225 Datenbank 291 erzeugen 292 im Internet 306 Verbindung herstellen 294 Datenbankmanagement-System 292 Datensatz (Datenbank) 291 ändern 303 anlegen 292, 294 anzeigen 295 auswählen 296 sortieren 300 Datensatzcursor (Datenbank) 294 Datentyp bool 120 bytes 97 Datenbank 291 deque 209 ermitteln 83 float 79 FLOAT (SQL) 292 int 77 INTEGER (SQL) 292 long 196 NoneType 123 spezieller 209 str 86 TEXT (SQL) 292 Datum und Zeit 199 Differenz 204 erzeugen 203 formatieren 199, 201 389 1406.book Seite 390 Donnerstag, 5. März 2009 1:08 13 Index Datum und Zeit (Forts.) Nullpunkt 199 Debug Control 154 Debug Off 157 Debug On 154 Debugger 154 deepcopy() copy 128, 187 def 67 Klassenmethode 180 del 101, 127 del() 111 DELETE (SQL) 305 denominator 85 deque 209 deque() collections 211 Deserialisierung 242 Destruktor 182 dezimale Zahl 77 Dezimalformat 144 Dezimalzeichen 18 Dictionary 109 aktualisieren 111 Element löschen 111 Elementexistenz 111 erzeugen 110 Funktionen 110 leeres 120 vergleichen 113 View 111 Differenzmenge 118 discard() 116 Doppelpunkt 89 double-ended queue 209 DoubleVar 331 Duale Zahl 77 Dualformat 144 dump() pickle 242 Eingabe kommentierte 134 nicht sinnvolle 159 versteckte (GUI) 318 versteckte (HMTL) 275 wiederholen 62 Zeichenkette 33, 87 Eingabe, Verarbeitung, Ausgabe 34 Eingabefeld einzeilig (GUI) 316 HTML 275 mehrzeiliges (GUI) 320 scrollbares (GUI) 322 Eingebaute Funktion 170 Einrücken 56 doppelt 49 Einzelschrittverfahren 154 elif 41 else 39, 41 Elternelement (GUI) 343 enable() cgitb 270 end 138 Endlosschleife 120, 309 endswith() str 94 Entry-Widget 316 Escape-Sequenz 97 eval() 137 Excel 235 except 60, 158 exec() 137 execute() cursor 294 exit 25 exit() sys 310 Exponentialformat 142 extend() 211 extendleft() 211 E F e f (Format) 142 falsch 120 False 120 Fehler 58, 151 abfangen 60, 61 erzeugen 158 Eulersche Zahl 82 Exponentialschreibweise 79 Format 142 Eigenschaft 180 Eindeutiger Index (Datenbank) 293, 305 390 1406.book Seite 391 Donnerstag, 5. März 2009 1:08 13 Index Fehler (Forts.) im Browser anzeigen 271 Laufzeitfehler 153 logischer 154 Nachricht (GUI) 372 Syntaxfehler 152 Unterscheidung 159 Feld (Datenbank) 291 fg 313 FieldStorage cgi 270 value 271 filter() 148 find() str 92 findall() re 218 Fließkommazahl 79 float 79 FLOAT (SQL) 292 float() 34, 94 font 313 for 47 form (HTML) 263 format() 140, 239 Fraction() fractions 84 fractions Fraction() 84 gcd() 85 Modul 83 Frame-Widget 343 from 175 Frozenset 119 frozenset() 119 Funktion 65 Aufruf 67 beenden 70 benannter Parameter 162 Definition 67 eingebaute 170 mehrere Rückgabewerte 164 Mehrfachaufruf 146 Name 67 Parameter, ein 68 Parameter, mehrere 69 Parameterübergabe 165 Parametervoreinstellung 163 Rückgabewert 70 Funktion (Forts.) trigonometrische 82 überspringen 156 variable Parameteranzahl 161 verlassen 157 G Ganze Zahl 77 Ganzzahldivision Rest 19 Ganzzahligkeit ermitteln 83 gcd() fractions 85 Geometriemanager (GUI) 311, 343, 351, 353 geometry() 372 gesetzt 61 get() 317, 325, 331 get_ident() _thread 214 GET-Methode 263 Gleich in Python 38 in SQL 298 glob() glob 246 global 168 Graphical User Interface 309 grid() 351 Groß- und Kleinschreibung 21 Größter gemeinsamer Teiler 85 GUI-Anwendung 309 H Haltepunkt 157 has_key() 197 Header 268 height 313 hex() 78 hexadezimale Zahl 77 Hexadezimalformat 144 Hintergrundfarbe (GUI) 313 Höhe (GUI) 313 htdocs 258 HTML Datei kopieren 261 Datei lesen 259 391 1406.book Seite 392 Donnerstag, 5. März 2009 1:08 13 Index HTML (Forts.) Formular 269 Formulardaten 270 Formularelement 272 lernen 259 http 258 I Identität 126 IDLE 17, 154 if 38 image 313 import 37, 175 in Dictionary 111 Element-View 113 for 47 Key-View 113 Liste 100 Sequenz 88 Set 115 Werte-View 112 Index einer Sequenz 89 index() 104 Info-Nachricht (GUI) 372 input (HTML) 263 input() 26, 33, 134 INSERT INTO (SQL) 294 insert() 103, 321, 324 Instanz 181 int 77 int() 34, 80, 94 INTEGER (SQL) 292 Internet 257 Daten lesen 259 Daten senden 261, 264 Datenbank im 306 Interpreter 14 IntVar 331 is 125, 188 items() 113 Iterable 145 filtern 148 verbinden 146 Iterierbares Objekt 145 392 J Ja/Nein-Box (GUI) 372 K Kalenderwoche 201 keys() 113 Klammersetzung 19 Klasse 179 abgeleitete 189 Basisklasse 189 Definition 180 Kommandozeile 24, 176 Kommentar 27 Konstruktor 182 Kontextmenü (GUI) 368 Kontrollkästchen GUI 333 HTML 275 Kontrollstruktur geschachtelt 48 Kopfrechnen 31 L Label-Widget 313 Lambda 169 Lange Ausgaben 28 Laufzeitfehler 153 Layoutmanager (GUI) 343 len() 89 like (SQL) 298 limit_denominator() 85 Line Feed 97 Linksbündig 143 Linux 14 List Comprehension 149 Listbox-Widget 323, 325 Liste 98 Anzahl bestimmter Elemente 104 eingebettete 99 Element anfügen 104 Element einfügen 103 Element löschen 101, 104 filtern 149 leere 120 mehrdimensionale 99 Operation 101 1406.book Seite 393 Donnerstag, 5. März 2009 1:08 13 Index Liste (Forts.) Position ermitteln 104 sortieren 104 umdrehen 104 load() pickle 244 localhost 258 localtime() time 199 logischer Fehler 154 logischer Operator 42 lokaler Namensraum 168 lokaler Webserver 257 long 196 Lösungen 15 M mainloop() Tk 311 map() 146 math cos() 82 e 82 Modul 82 pi 82 sin() 82 tan() 82 Maus-Ereignis (GUI) 338 max() 171 Maximum 171 Menge 114 Differenzmenge 118 Element hinzufügen 116 Element löschen 116 kopieren 116 leere 120 leeren 116 Schnittmenge 118 Teilmenge 116 Vereinigungsmenge 118 Menu tkinter 363 Menü Debug 154 File 22 Run 24 Menü (GUI) 363 abtrennen 367 Menüleiste (GUI) 363 messagebox tkinter 372 Methode 180 besondere 184 min() 171 Minimum 171 mktime() time 203 Modul _thread 212 cgi 267, 270 cgitb 270 collections 209 copy 128, 187 eigenes 174 einbinden 37, 175 fractions 83 glob 246 math 82 os 247, 248 random 37 re 218 shutil 248 sqlite3 292 sys 310 tkinter 310 tkinter.messagebox 372 tkinter.scrolledtext 323 urllib 257 urllib.parse 257 urllib.request 257 webbrowser 280 Modularisierung 65, 174 Monatsname 201 multiple (HTML) 277 Multithreading 212 N Nachkommastellen, Anzahl 140 Nachrichtenbox (GUI) 372 Namensraum 168 Nenner eines Bruchs 85 NICHT logisches (SQL) 298 nicht logisches (Python) 42 Nichts 123 393 1406.book Seite 394 Donnerstag, 5. März 2009 1:08 13 Index None 123 NoneType 123 not 42 NOT (SQL) 298 numerator 85 O o (Format) 144 Objekt 77, 180 aus Datei lesen 244 ausgeben 184 erzeugen 181 Identität 188 in Datei schreiben 242 kopieren 128, 187 Referenz 125, 187 Typ ermitteln 83 vergleichen 186 Objektorientierte Programmierung 179 oct() 78 Oder, logisches (Python) 42 ODER, logisches (SQL) 298 offvalue 335 Ok/Abbrechen-Box (GUI) 372 Oktale Zahl 77 Oktalformat 144 Online-Bestellung 274 onvalue 335 OOP 179 open() Datei 226 webbrowser 280 Operator für Sequenzen 88 logischer 42 mehrere Vergleichsoperatoren 44 Rangfolge 19, 46 Rechenoperator 80, 186 Vergleichsoperator 38, 186 Verkettung 88 Vervielfachung 88 Operatormethode 185 Optionsfeld (GUI) 329 or 42 OR (SQL) 298 ord() 172 ORDER BY (SQL) 300 394 os Modul 247, 248 rename() 249 stat() 247 Out 157 Over 156 P pack() 311 Parallele Verarbeitung 212 Parameter 68, 69 benannter 162, 196 variable Anzahl 161, 196 Voreinstellung 163 partition() str 94 pass 135 password (HTML) 277 Passworteingabe GUI 318 HTML 275 PhotoImage tkinter 316 PHP 258, 262 pi math 82 pickle 242 dump() 242 load() 244 place() 353, 355, 357, 359 pop() 211 popleft() 211 Position Teiltext 92 POST-Methode 265 PRIMARY KEY (SQL) 294, 305 print() 22, 138 mehrere Ausgaben 28 Programm abbrechen 157 Abbruch vermeiden 59 anhalten 26, 206 ausführen im Windows-Explorer 26 ausführen in IDLE 24 ausführen unter Linux 27 ausführen von Kommandozeile 24 beenden 310 eingeben 22 konvertieren 197 1406.book Seite 395 Donnerstag, 5. März 2009 1:08 13 Index Programm (Forts.) Parameter 176 Python auf dem Webserver 268 installieren 16 Interpreter 268 Shell 17 starten 17 Version 3.0 195 python.exe 268 python.org 16 python-3.0.msi 16 Q Quit 157 R RAD 13 radio (HTML) 277 Radiobutton GUI 329 HTML 275 Rahmen (GUI) 343 raise 158 Randart (GUI) 313 Randbreite (GUI) 313 randint() random 37 random Modul 37 randint() 37 seed() 37 range() 51 Rapid Application Development 13 raw_input() 196 re findall() 218 Modul 218 sub() 222 read() 229 readline() 229 readlines() 229 Rechenregel 18 Rechtsbündig 143 Referenz 125, 187 löschen 127 übergeben 166 Regulärer Ausdruck 218 relief 313 remove() 104 rename() os 249 replace() str 93 Reset-Button (HTML) 275 return 70 mehrere Werte 165 reverse() 104 reversed() 173 rfind() str 92 rotate() 211 round() 80 rpartition() str 94 Rückgabewert 70, 123 mehrere 164 Run Module 24, 155 Runden 80 RuntimeError 160 S Scale-Widget 335 Schaltfläche (GUI) 311 Schieberegler (GUI) 335 Schleife 47 Abbruch 48 Durchlauf abbrechen 63 for 47 while 56 Schlüssel-Wert-Kombination 109 Schnittmenge 118 Schrift (GUI) 313 Scrollbalken (GUI) 327 Scrollbar tkinter 328 Scrollbar-Widget 327 ScrolledText() tkinter.scrolledtext 323 ScrolledText-Widget 322 Scrollen (GUI) 322 seed() random 37 seek() 239 select (HTML) 277 395 1406.book Seite 396 Donnerstag, 5. März 2009 1:08 13 Index SELECT (SQL) 296 selected (HTML) 277 self 181 Selfhtml 259 Sendebutton (HTML) 275 sep 138 Separator 138 Sequenz 86 Index 89 Operatoren 88 Teilbereich 89 umdrehen 173 Serialisierung 242 Set 114 unveränderliches 119 set() 115 GUI 328, 331 Set-Literal 196 show 318 show() 372 showerror() 372 showinfo() 372 showwarning() 372 shutil copyfile() 249 Modul 248 sin() math 82 sleep() time 206 Slice 89 sort() 104 sorted() 173 Sortieren 173 Spiel, Kopfrechnen 31 split() str 94 SQL 292 SQL-Befehl senden 294 SQLite 292 sqlite3 connect() 294 connection 294 cursor 294 Modul 292 start_new_thread() _thread 212 startswith() str 94 396 stat() os 247 Step 155 str count() 92 Datentyp 86 endswith() 94 find() 92 partition() 94 replace() 93 rfind() 92 rpartition() 94 split() 94 startswith() 94 str() 96 strftime() time 201 String 86 leerer 120 StringVar 331 sub() re 222 Suchen und Ersetzen 218 sum() 171 Summe 171 Syntaxfehler 152 sys argv 176 exit() 310 Modul 310 T Tabelle (Datenbank) 291 anlegen 292, 294 tan() math 82 Taschenrechner 17 Tastatur-Ereignis (GUI) 338 Taste F5 24, 155 Teilbereich einer Sequenz 89 Teilmenge 116 Teiltext ersetzen 93 TEXT (SQL) 292 text/html 268 Text-Area (HTML) 277 Text-Widget 320 Thread 212 Ausnahme 216 1406.book Seite 397 Donnerstag, 5. März 2009 1:08 13 Index Thread (Forts.) globale Daten 215 Identifikation 213 time 199 localtime() 199 mktime() 203 sleep() 206 strftime() 201 time() 199 time() time 199 Tk Interface 309 mainloop 311 tkinter 310 tkinter Button 311 Menu 363 messagebox 372 Modul 310 PhotoImage 316 Scrollbar 328 Tk 310 tkinter.messagebox askokcancel() 372 askretrycancel() 372 askyesno() 372 Modul 372 show() 372 showerror() 372 showinfo() 372 showwarning() 372 tkinter.scrolledtext ScrolledText() 323 True 120 try 60, 158 Tupel 104 entpacken 108 leeres 120 mehrdimensionales 105 verpacken 108 type() 83 U Übungsaufgabe 15 Umlaut 97 Umrechnung in dual 78 Umrechnung (Forts.) in hexadezimal 78 in oktal 78 Umwandlung in ganze Zahl 80 in Zahl 34, 94 in Zeichenkette 96 Und, logisches (Python) 42 UND, logisches (SQL) 298 Ungleich Python 38 SQL 298 Unicode 172 Literal 196 unique (SQL) 305 UPDATE (SQL) 303 update() 111 urlencode() urllib.parse 266 urllib Modul 257 urllib.parse Modul 257 urlencode() 266 urllib.request Modul 257 urlopen() 260 urlretrieve() 261 urlopen() urllib.request 260 urlretrieve() urllib.request 261 V value, FieldStorage 271 ValueError 59 values() 112 Variable 20, 32 kontrollieren 156 Name 21 Vereinigungsmenge 118 Vererbung 189 Mehrfachvererbung 192 Vergleichsoperator 38 Verzeichnis verwalten 248 Verzweigung 37 einfach 38 mehrfache 40 397 1406.book Seite 398 Donnerstag, 5. März 2009 1:08 13 Index View 111 Vordergrundfarbe (GUI) 313 Vorzeichen 46 W Wagenrücklauf 97 Wahr 120 Wahrheitswert 120 Wahrheitswerttabelle 42 Warnungs-Nachricht (GUI) 372 Webbrowser 259 webbrowser Modul 280 open() 280 Webserver 257 Programmierung 267 while 56 while(True) 120 Widget 309 add_cascade() 368 add_checkbutton() 368 add_command() 367 add_radiobutton() 367 add_separator() 367 anchor 313 anordnen 343, 351, 353, 355 Bewegung 357, 359 bg 313 bind() 340, 342 borderwidth 313 command 311, 331, 335 configure() 312 DoubleVar 331 Eigenschaften ändern 311 Ereignis 340 fg 313 font 313 geometry() 372 get() 317, 325, 331 grid() 351 Größe, Ort 372 height 313 image 313 insert() 321, 324 IntVar 331 offvalue 335 onvalue 335 pack() 311 398 Widget (Forts.) place() 353, 355, 357, 359 relief 313 scrollbares 327 set() 328, 331 show 318 StringVar 331 Variable 329 width 313 yview() 328 width 313 Wiederholen/Abbrechen-Box (GUI) 372 Wiederholung 47 Windows 14 Wochentagsname 201 write() 227 writelines() 227 X x (Format) 144 Xampp 258 Control Panel 258 Y yview() 328 Z Zahl 77 als Bruch annähern 85 ganze 77 mit Nachkommastellen 79 Zahlensystem 77 Zähler eines Bruchs 85 Zeichenkette 86 beginnt mit 94 Eingabe 87 endet mit 94 mehrzeilig 87 partitionieren 94 zerlegen 94 Zeilenende 138 Zeilenumbruch in Code 133 Zeilenvorschub 97 Zeitzone 201 zip() 146 1406.book Seite 399 Donnerstag, 5. März 2009 1:08 13 Index Zufallszahl Generator 36 Generator initialisieren 37 liefern 37 Zuweisung 20, 32 kombinierte Operatoren 131 mehrfache 106 399