Einstieg in Python – Ideal für Programmiereinsteiger

Werbung
Wissen, wie’s geht.
Leseprobe
Dieses bewährte Einsteigerbuch in 5. Auflage führt Sie Schritt für
Schritt in Python ein und erklärt Ihnen alle Grundlagen. Viele Übungsaufgaben und Beispielanwendungen helfen Ihnen dabei, das Gelernte
in der Praxis anzuwenden. Überzeugen Sie sich selbst in dieser Leseprobe und entwickeln Sie ein Computerspiel mit Python.
»Kurs: Ein Computerspiel programmieren«
Inhaltsverzeichnis
Index
Der Autor
Leseprobe weiterempfehlen
Thomas Theis
Einstieg in Python
Ideal für Programmiereinsteiger
495 Seiten, broschiert, 5. Auflage, Juni 2017
24,90 Euro, ISBN 978-3-8362-4525-8
www.rheinwerk-verlag.de/4374
Kapitel 3
Programmierkurs
3
Der folgende Programmierkurs mit ausführlichen Erläuterungen führt Sie
schrittweise in die Programmierung mit Python ein. Begleitet wird der
Kurs von einem Programmierprojekt, das die vielen Teilaspekte zu einem
Ganzen verknüpft.
3.1 Ein Spiel programmieren
Damit Sie die Programmiersprache Python auf unterhaltsame Weise kennenlernen, werden Sie im Folgenden ein Spiel programmieren. Es wird im
Verlauf des Buchs kontinuierlich erweitert und verbessert.
3.1.1 Der Ablauf des Spiels
Nach Aufruf des Programms wird dem Benutzer eine Kopfrechenaufgabe
gestellt. Er gibt das von ihm ermittelte Ergebnis ein, und das Programm bewertet seine Eingabe.
Kopfrechnen
Die Aufgabe: 9 + 26
Bitte eine Zahl eingeben:
34
34 ist falsch
Bitte eine Zahl eingeben:
35
35 ist richtig
Ergebnis: 35
Anzahl Versuche: 2
Das Spiel wird in mehreren Einzelschritten erstellt. Zunächst entsteht eine
ganz einfache Version. Mit zunehmenden Programmierkenntnissen entwickeln Sie immer komplexere Versionen. Die im jeweiligen Abschnitt erlernten Programmierfähigkeiten setzen Sie unmittelbar zur Verbesserung
des Spielablaufs ein.
Das Spiel wächst
In späteren Abschnitten des Buchs entstehen weitere Versionen des Spiels.
Es begleitet Sie auf diese Weise durch das gesamte Buch. Unter anderem
wird es um die folgenden Möglichkeiten erweitert:
Versionen
35
3
3.2
Programmierkurs
왘 Es werden mehrere Aufgaben gestellt.
왘 Die benötigte Zeit wird gemessen.
왘 Der Name des Spielers und die benötigte Zeit werden als Highscore-Liste
dauerhaft in einer Datei oder einer Datenbank gespeichert.
왘 Die Highscore-Liste wird mit neuen Ergebnissen aktualisiert und auf
dem Bildschirm dargestellt.
Variablen und Operatoren
In den beiden Variablen a und b wird jeweils ein Wert gespeichert. Die beiden Werte werden addiert, das Ergebnis wird der Variablen c zugewiesen.
Die Aufgabenstellung wird ausgegeben, anschließend das Ergebnis. Der Benutzer des Programms hat noch keine Möglichkeit, in den Ablauf einzugreifen.
왘 Es gibt eine Version auf einer grafischen Benutzeroberfläche.
3.2.2 Eingabe einer Zeichenkette
왘 Es gibt eine Version, die das Spielen im Internet ermöglicht.
In diesem Abschnitt wird die Funktion input() zur Eingabe einer Zeichenkette durch den Benutzer eingeführt. Ein kleines Beispiel:
3.2 Variablen und Operatoren
Zur Speicherung von Werten werden Variablen benötigt. Operatoren dienen zur Ausführung von Berechnungen.
Verarbeitung,
Ausgabe
3
input()
# Eingabe einer Zeichenkette
print("Bitte einen Text eingeben")
x = input()
print("Ihre Eingabe:", x)
Listing 3.2 Datei eingabe_text.py
3.2.1 Berechnung und Zuweisung
Die Ausgabe könnte wie folgt aussehen:
Im folgenden Programm wird eine einfache Berechnung mithilfe eines
Operators durchgeführt. Das Ergebnis der Berechnung wird mit dem
Gleichheitszeichen einer Variablen zugewiesen. Es erfolgt eine Ausgabe.
Diese Schritte kennen Sie bereits aus Abschnitt 2.1.5.
Bitte einen Text eingeben
Python ist toll
Ihre Eingabe: Python ist toll
# Werte
a = 5
b = 3
Der Benutzer gibt einen kleinen Satz ein. Dieser Satz wird in der Variablen
x gespeichert und anschließend ausgegeben.
3.2.3 Eingabe einer Zahl
# Berechnung
c = a + b
# Ausgabe
print("Die Aufgabe:", a, "+", b)
print("Das Ergebnis:", c)
Listing 3.1 Datei zuweisung.py
Die Ausgabe des Programms lautet:
Die Aufgabe: 5 + 3
Das Ergebnis: 8
36
Im weiteren Verlauf des Spiels ist es notwendig, die Eingabe des Benutzers
als Zahl weiterzuverwenden. Dazu muss die Zeichenkette, die die Funktion
input() liefert, in eine Zahl umgewandelt werden.
Umwandlung
Zur Umwandlung gibt es unter anderem die folgenden Funktionen:
왘 Die eingebaute Funktion int() wandelt eine Zeichenkette in eine ganze Zahl um; eventuell vorhandene Nachkommastellen werden abgeschnitten.
int()
왘 Die eingebaute Funktion float() wandelt eine Zeichenkette in eine Zahl
mit Nachkommastellen um.
float()
37
3
3.2
Programmierkurs
Abbruch
왘 Falls die Zeichenkette für float() keine gültige Zahl enthält, kommt es
zu einem Programmabbruch. Bei int() muss es sich sogar um eine gültige ganze Zahl handeln. In Abschnitt 3.6, »Fehler und Ausnahmen«, lernen Sie, wie Sie Programmabbrüche abfangen.
Ein Beispiel:
# Eingabe einer Zahl
print("Bitte eine ganze Zahl eingeben")
x = input()
print("Ihre Eingabe:", x)
# Umwandlung in ganze Zahl
xganz = int(x)
print("Als ganze Zahl:", xganz)
# Mit Berechnung
xdoppel = xganz * 2
print("Das Doppelte:", xdoppel)
Listing 3.3 Datei eingabe_zahl.py
Variablen und Operatoren
print("Die Aufgabe:", a, "+", b)
# Eingabe
print("Bitte eine Zahl eingeben:")
z = input()
3
# Eingabe in Zahl umwandeln
zahl = int(z)
# Ausgabe
print("Ihre Eingabe:", z)
print("Das Ergebnis:", c)
Listing 3.4 Datei spiel_eingabe.py
Eine mögliche Ausgabe des Programms:
Die Aufgabe: 5 + 3
Bitte eine Zahl eingeben:
9
Ihre Eingabe: 9
Das Ergebnis: 8
Die Ausgabe könnte wie folgt aussehen:
Bitte eine ganze Zahl eingeben
6
Ihre Eingabe: 6
Als ganze Zahl: 6
Das Doppelte: 12
Übung u_eingabe_inch
Der Benutzer gibt eine Zeichenkette ein. Diese Zeichenkette wird mithilfe
der eingebauten Funktion int() in eine ganze Zahl umgewandelt. Die Zahl
und das Doppelte der Zahl werden ausgegeben.
Schreiben Sie ein Programm zur Eingabe und Umrechnung von beliebigen
Inch-Werten in Zentimeter. Speichern Sie das Programm in der Datei u_
eingabe_inch.py. Rufen Sie das Programm auf und testen Sie es. Die Ausgabe kann zum Beispiel wie folgt aussehen:
3.2.4 Spiel, Version mit Eingabe
Bitte geben Sie den Inch-Wert ein:
3.5
3.5 Inch sind 8.89 cm
Das Spiel, in dem der Benutzer eine oder mehrere Kopfrechenaufgaben lösen soll, erhält eine Eingabe. Es wird wie folgt geändert:
#
a
b
c
38
Das Programm gibt die Aufforderung Bitte eine Zahl eingeben: aus und
hält an. Die Eingabe des Benutzers wird in der Variablen z gespeichert. Die
Zeichenkette z wird mithilfe der Funktion int() in eine ganze Zahl verwandelt.
Werte und Berechnung
= 5
= 3
= a + b
Inch in Zentimeter
Übung u_eingabe_gehalt
Schreiben Sie ein Programm zur Berechnung des monatlich zu zahlenden
Steuerbetrags. Der Anwender wird dazu aufgefordert, sein monatliches
Steuer berechnen
39
3
3.3
Programmierkurs
Bruttogehalt einzugeben. Anschließend werden 18 % dieses Betrags
berechnet und ausgegeben. Nutzen Sie die Datei u_eingabe_gehalt.py. Die
Ausgabe kann zum Beispiel wie folgt aussehen:
Geben Sie Ihr Bruttogehalt in Euro ein:
2500
Es ergibt sich ein Steuerbetrag von 450.0 Euro
3.2.5 Zufallszahlen
Natürlich wird nicht immer die gleiche Kopfrechenaufgabe gestellt. In
Python steht ein Zufallszahlengenerator zur Verfügung. Er erzeugt zufällige Zahlen, die wir zur Bildung der Aufgabenstellung nutzen.
Modul importieren
Die Funktionen des Zufallszahlengenerators befinden sich in einem zusätzlichen Modul, das zunächst importiert werden muss. Das Programm
wird wie folgt verändert:
# Modul random importieren
import random
# Zufallsgenerator initialisieren
random.seed()
# Zufallswerte und Berechnung
a = random.randint(1,10)
b = random.randint(1,10)
c = a + b
print("Die Aufgabe:", a, "+", b)
# Eingabe
print("Bitte eine Zahl eingeben:")
z = input()
zahl = int(z)
# Ausgabe
print("Ihre Eingabe:", z)
print("Das Ergebnis:", c)
Verzweigungen
Eine mögliche Ausgabe des Programms, abhängig von den gelieferten zufälligen Werten, sieht wie folgt aus:
Die Aufgabe: 8 + 3
Bitte eine Zahl eingeben:
7
Ihre Eingabe: 7
Das Ergebnis: 11
3
Zusätzliche Module können Sie mithilfe der Anweisung import in das Programm einbinden. Die Funktionen dieser Module können Sie anschließend in der Schreibweise Modulname.Funktionsname aufrufen.
import
Der Aufruf der Funktion seed() des Moduls random führt dazu, dass der Zufallszahlengenerator mit der aktuellen Systemzeit initialisiert wird. Anderenfalls könnte es passieren, dass anstelle einer zufälligen Auswahl immer
wieder die gleichen Zahlen geliefert würden.
seed()
Die Funktion randint() des Moduls random liefert eine ganze Zufallszahl im
angegebenen Bereich. Im vorliegenden Fall ist dies also eine zufällige Zahl
von 1 bis 10.
randint()
Die Funktionen des Moduls random können für die zufälligen Werte eines
Spiels genutzt werden. Falls Sie zufällige Werte zum Zwecke der Verschlüsselung oder aus Gründen der Sicherheit benötigen, sollten Sie die Funktionen des Moduls secrets nutzen, das es seit Python 3.6 gibt.
secrets
3.3 Verzweigungen
In den bisherigen Programmen werden alle Anweisungen der Reihe nach
ausgeführt. Zur Steuerung des Programmablaufs werden allerdings häufig
Verzweigungen benötigt. Innerhalb des Programms wird anhand einer Bedingung entschieden, welcher Zweig des Programms ausgeführt wird.
Programmablauf
3.3.1 Vergleichsoperatoren
Bedingungen werden mithilfe von Vergleichsoperatoren formuliert. Tabelle 3.1 listet die Vergleichsoperatoren mit ihrer Bedeutung auf.
Kleiner, größer,
gleich
Listing 3.5 Datei spiel_zufallszahl.py
40
41
3
3.3
Programmierkurs
Operator
Bedeutung
>
größer als
<
kleiner als
>=
größer als oder gleich
<=
kleiner als oder gleich
==
gleich
!=
ungleich
Tabelle 3.1 Vergleichsoperatoren
3.3.2 Einfache Verzweigung
if-else
Im folgenden Beispiel wird untersucht, ob eine Zahl positiv ist. Ist dies der
Fall, wird Diese Zahl ist positiv ausgegeben, anderenfalls lautet die Ausgabe Diese Zahl ist 0 oder negativ. Es wird also nur eine der beiden Anweisungen ausgeführt.
x = 12
print("x:", x)
if x > 0:
print("Diese Zahl ist positiv")
else:
print("Diese Zahl ist 0 oder negativ")
Listing 3.6 Datei verzweigung_einfach.py
Die Ausgabe des Programms lautet:
x: 12
Diese Zahl ist positiv
In der ersten Zeile erhält die Variable x den Wert 12.
42
if, Doppelpunkt
In der zweiten Zeile wird mithilfe von if eine Verzweigung eingeleitet. Danach wird eine Bedingung formuliert (hier x > 0), die entweder wahr oder
falsch ergibt. Anschließend kommt ein Doppelpunkt.
Einrücken
Es folgen eine oder mehrere Anweisungen, die nur ausgeführt werden, falls
die Bedingung wahr ergibt. Die Anweisungen müssen innerhalb des sogenannten if-Zweigs mithilfe der (ê)-Taste eingerückt werden, damit
Verzweigungen
Python die Zugehörigkeit zur Verzweigung erkennen kann. Gleichzeitig
macht die Einrückung das Programm übersichtlicher.
In der vierten Zeile wird mithilfe der Anweisung else der alternative Teil
der Verzweigung eingeleitet. Es folgt wiederum ein Doppelpunkt.
else, Doppelpunkt
Dann folgen eine oder mehrere Anweisungen, die nur ausgeführt werden,
falls die Bedingung falsch ergibt. Auch diese Anweisungen müssen eingerückt werden.
3.3.3 Spiel, Version mit Bewertung der Eingabe
Das Spiel, in dem der Benutzer eine oder mehrere Kopfrechenaufgaben lösen soll, wird um eine Bewertung der Eingabe erweitert. Mithilfe einer einfachen Verzweigung wird untersucht, ob sie richtig oder falsch war. Das
Programm verändert sich wie folgt:
Eingabe prüfen
# Zufallsgenerator
import random
random.seed()
# Werte und Berechnung
a = random.randint(1,10)
b = random.randint(1,10)
c = a + b
print("Die Aufgabe:", a, "+", b)
# Eingabe
print("Bitte eine Zahl eingeben:")
z = input()
zahl = int(z)
# Verzweigung
if zahl == c:
print(zahl, "ist richtig")
else:
print(zahl, "ist falsch")
print("Ergebnis: ", c)
Listing 3.7 Datei spiel_verzweigung.py
43
3
3
3.3
Programmierkurs
Eine mögliche Ausgabe des Programms wäre:
Die Aufgabe: 2 + 8
Bitte eine Zahl eingeben:
11
11 ist falsch
Ergebnis: 10
Die Eingabe wird in eine Zahl umgewandelt. Entspricht diese Zahl dem Ergebnis der Rechnung, wird ist richtig ausgegeben. Entspricht die Zahl
nicht dem Ergebnis, so wird ist falsch ausgegeben, und das korrekte Ergebnis wird genannt.
Übung u_verzweigung_einfach
Das Programm zur Berechnung des Steuerbetrags wird verändert. Der
Anwender soll dazu aufgefordert werden, sein monatliches Bruttogehalt
einzugeben. Liegt das Gehalt über 2.500 €, sind 22 % Steuern zu zahlen,
ansonsten 18 %. Nutzen Sie die Datei u_verzweigung_einfach.py.
Es ist nur eine Eingabe erforderlich. Innerhalb des Programms soll anhand
des Gehalts entschieden werden, welcher Steuersatz zur Anwendung
kommt. Die Ausgabe kann zum Beispiel wie folgt aussehen:
Geben Sie Ihr Bruttogehalt in Euro ein:
3000
Es ergibt sich ein Steuerbetrag von 660.0 Euro
oder sie kann so aussehen:
Geben Sie Ihr Bruttogehalt in Euro ein:
2000
Es ergibt sich ein Steuerbetrag von 360.0 Euro
Verzweigungen
elif x < 0:
print("x ist negativ")
else:
print("x ist gleich 0")
3
Listing 3.8 Datei verzweigung_mehrfach.py
Die Ausgabe des Programms:
x: –5
x ist negativ
Die Verzweigung wird mithilfe von if eingeleitet. Falls x positiv ist, werden
die nachfolgenden, eingerückten Anweisungen ausgeführt.
if
Nach elif wird eine weitere Bedingung formuliert. Sie wird nur untersucht,
falls die erste Bedingung (nach dem if) nicht zutrifft. Falls x negativ ist,
werden die nachfolgenden, eingerückten Anweisungen ausgeführt.
elif
Die Anweisungen nach dem else werden nur durchgeführt, falls keine der
beiden vorherigen Bedingungen zutraf (nach dem if und nach dem elif).
In diesem Fall bedeutet das, dass x gleich 0 ist, da es nicht positiv und nicht
negativ ist.
else
Hinweis
Innerhalb einer Verzweigung können mehrere elif-Anweisungen vorkommen. Sie werden der Reihe nach untersucht, bis das Programm zu
einer Bedingung kommt, die zutrifft. Die weiteren elif-Anweisungen
oder eine else-Anweisung werden in diesem Fall nicht mehr beachtet.
Übung u_verzweigung_mehrfach
3.3.4 Mehrfache Verzweigung
Mehrere
Möglichkeiten
if-elif-else
44
In vielen Anwendungsfällen gibt es mehr als zwei Möglichkeiten, zwischen
denen zu entscheiden ist. Dazu wird eine mehrfache Verzweigung benötigt. Im folgenden Beispiel wird untersucht, ob eine Zahl positiv, negativ
oder gleich 0 ist. Es wird eine entsprechende Meldung ausgegeben:
x = -5
print("x:", x)
if x > 0:
print("x ist positiv")
Das Programm zur Berechnung des Steuerbetrags soll weiter verändert
werden (Datei u_verzweigung_mehrfach.py). Der Anwender soll sein
monatliches Bruttogehalt eingeben. Anschließend wird sein Steuerbetrag
nach der folgenden Steuertabelle berechnet:
Gehalt
Steuersatz
mehr als 4.000 €
26 %
2.500 bis 4.000 €
22 %
weniger als 2.500 €
18 %
45
3
3.3
Programmierkurs
3.3.5 Logische Operatoren
Ein Beispiel:
Logische
Verknüpfung
Mithilfe der logischen Operatoren and, or und not können mehrere Bedingungen miteinander verknüpft werden.
and
왘 Eine Bedingung, die aus einer oder mehreren Einzelbedingungen besteht, die jeweils mit dem Operator and (= und) verknüpft sind, ergibt
wahr, wenn jede der Einzelbedingungen wahr ergibt.
or
왘 Eine Bedingung, die aus einer oder mehreren Einzelbedingungen besteht, die mit dem Operator or (= oder) verknüpft sind, ergibt wahr,
wenn mindestens eine der Einzelbedingungen wahr ergibt.
x = 12
y = 15
z = 20
print("x:", x)
print("y:", y)
print("z:", z)
not
왘 Der Operator not (= nicht) kehrt den Wahrheitswert einer Bedingung
um, das heißt, eine falsche Bedingung wird wahr, eine wahre Bedingung
wird falsch.
Der Zusammenhang wird auch in Tabelle 3.2 bis Tabelle 3.4 gezeigt.
# Bedingung 2
if y>x or y>z:
print("y ist nicht die kleinste Zahl")
Bedingung 2
Ergebnis
wahr
wahr
wahr
wahr
falsch
falsch
falsch
wahr
falsch
Listing 3.9 Datei operator_logisch.py
falsch
falsch
falsch
Die Ausgabe des Programms:
Bedingung 1
Bedingung 2
Ergebnis
wahr
wahr
wahr
wahr
falsch
wahr
falsch
wahr
wahr
falsch
falsch
falsch
Tabelle 3.3 Auswirkung des logischen Operators »or«
Bedingung
Ergebnis
wahr
falsch
falsch
wahr
3
# Bedingung 1
if x<y and x<z:
print("x ist die kleinste Zahl")
Bedingung 1
Tabelle 3.2 Auswirkung des logischen Operators »and«
Verzweigungen
# Bedingung 3
if not y<x:
print("y ist nicht kleiner als x")
x: 12
y: 15
z: 20
x ist die kleinste Zahl
y ist nicht die kleinste Zahl
y ist nicht kleiner als x
Bedingung 1 ergibt wahr, wenn x kleiner als y und kleiner als z ist. Dies trifft
bei den gegebenen Anfangswerten zu. Bedingung 2 ergibt wahr, wenn y
größer als x oder y größer als z ist. Die erste Bedingung trifft zu, also ist die
gesamte Bedingung wahr: y ist nicht die kleinste der drei Zahlen. Bedingung 3 ist wahr, wenn y nicht kleiner als x ist. Dies trifft hier zu. Zu allen Verzweigungen kann es natürlich auch einen else-Zweig geben.
Mehrere
Entscheidungen
Tabelle 3.4 Auswirkung des logischen Operators »not«
46
47
3
3.3
Programmierkurs
3.3.7 Spiel, Version mit genauer Bewertung der Eingabe
Übung u_operator
Das Programm zur Berechnung des monatlich zu zahlenden Steuerbetrags
soll wiederum verändert werden (Datei u_operator.py). Die Steuertabelle
sieht nun wie folgt aus:
왘 anhand logischer Operatoren
Steuersatz
> 4.000 €
ledig
26 %
> 4.000 €
verheiratet
22 %
Das Programm wird wie folgt verändert:
<= 4.000 €
ledig
22 %
<= 4.000 €
verheiratet
18 %
# Zufallsgenerator
import random
random.seed()
Bedingungen können auch mehrere Vergleichsoperatoren enthalten. Manche Verzweigungen sind auf diese Weise verständlicher. Es folgt ein Beispiel:
# Bedingung 1
if x < y < z:
print("y liegt zwischen x und z")
Listing 3.10 Datei operator_vergleich.py
Die Ausgabe des Programms:
x: 12
y: 15
z: 20
y liegt zwischen x und z
Die Bedingung x < y < z entspricht dem Ausdruck x < y and y < z. In der Kurzform ist sie allerdings besser lesbar.
3
왘 mithilfe einer mehrfachen Verzweigung
Familienstand
x = 12
y = 15
z = 20
print("x:", x)
print("y:", y)
print("z:", z)
48
Nun kann die Eingabe des Benutzers in dem Kopfrechenspiel auf verschiedene Art und Weise genauer bewertet werden:
Gehalt
3.3.6 Mehrere Vergleichsoperatoren
Kurzform
Verzweigungen
왘 anhand von Bedingungen mit mehreren Vergleichsoperatoren
# Werte und Berechnung
a = random.randint(1,10)
b = random.randint(1,10)
c = a + b
print("Die Aufgabe:", a, "+", b)
# Eingabe
print("Bitte eine Zahl eingeben:")
z = input()
zahl = int(z)
# Mehrfache Verzweigung, logische Operatoren
# Bedingungen mit mehreren Vergleichsoperatoren
if zahl == c:
print(zahl, "ist richtig")
elif zahl < 0 or zahl > 100:
print(zahl, "ist ganz falsch")
elif c-1 <= zahl <= c+1:
print(zahl, "ist ganz nahe dran")
else:
print(zahl, "ist falsch")
# Ende
print("Ergebnis: ", c)
Listing 3.11 Datei spiel_operator.py
49
3
3.4
Programmierkurs
Eine mögliche Ausgabe des Programms wäre:
Die Aufgabe: 2 + 1
Bitte eine Zahl eingeben:
4
4 ist ganz nahe dran
Ergebnis: 3
or
Insgesamt werden vier Möglichkeiten angeboten: über if, zweimal elif
und else. Ist die Eingabe kleiner als 0 oder größer als 100, so ist sie ganz
falsch. Dies wird mithilfe des logischen Operators or gelöst.
Mehrere
Vergleichsoperatoren
Unterscheidet sich die eingegebene Zahl vom richtigen Ergebnis nur um
den Wert 1, ist die Eingabe ganz nahe dran. Dies wird mit einer Bedingung
ermittelt, die mehrere Vergleichsoperatoren enthält.
3.3.8 Rangfolge der Operatoren
In vielen Ausdrücken treten mehrere Operatoren auf. Bisher sind dies Rechenoperatoren, Vergleichsoperatoren und logische Operatoren. Die einzelnen Teilschritte folgen der sogenannten Rangfolge der Operatoren. Die
Teilschritte, bei denen höherrangige Operatoren beteiligt sind, werden zuerst ausgeführt.
Höchster Rang oben
Tabelle 3.5 gibt die Rangfolge der bisher verwendeten Operatoren in Python
an, beginnend mit den Operatoren, die den höchsten Rang haben. Gleichrangige Operatoren stehen jeweils in einer Zeile. Teilschritte, in denen
mehrere Operatoren gleichen Ranges stehen, werden von links nach rechts
ausgeführt.
Operator
Bedeutung
and
logisches Und
or
logisches Oder
3.4 Schleifen
Neben der Verzweigung gibt es eine weitere wichtige Struktur zur Steuerung von Programmen: die Schleife. Mithilfe einer Schleife ermöglichen
Sie die wiederholte Ausführung eines Programmschritts.
Es muss zwischen zwei Typen von Schleifen unterschieden werden: der
for-Schleife und der while-Schleife. Der jeweilige Anwendungsbereich der
beiden Typen wird durch folgende Merkmale definiert:
Wiederholung
왘 Eine for-Schleife wird verwendet, wenn ein Programmschritt für eine regelmäßige, zum Zeitpunkt der Anwendung bekannte Folge von Werten
wiederholt ausgeführt werden soll.
for
왘 Eine while-Schleife wird verwendet, wenn sich erst durch Eingaben des
Anwenders ergibt, ob ein Programmschritt ausgeführt werden soll und
wie oft er wiederholt wird.
while
Eine for-Schleife wird auch als Zählschleife bezeichnet, eine while-Schleife
als bedingungsgesteuerte Schleife.
3.4.1 for-Schleife
Bedeutung
Die Anwendung der for-Schleife verdeutlicht das folgende Beispiel:
+-
positives Vorzeichen einer Zahl, negatives Vorzeichen
einer Zahl
for i in 2, 7.5, -22:
print("Zahl:", i, ", Quadrat:", i*i)
* / % //
Multiplikation, Division, Modulo, Ganzzahldivision
Listing 3.12 Datei schleife_for.py
+-
Addition, Subtraktion
< <= > >= == !=
kleiner, kleiner oder gleich, größer, größer oder gleich,
gleich, ungleich
logische Verneinung
3
Tabelle 3.5 Rangfolge der bisher genutzten Operatoren (Forts.)
Operator
not
Schleifen
Folgende Ausgabe wird erzeugt:
Zahl: 2 , Quadrat: 4
Zahl: 7.5 , Quadrat: 56.25
Zahl: –22 , Quadrat: 484
Tabelle 3.5 Rangfolge der bisher genutzten Operatoren
50
51
3
3.4
Programmierkurs
Abfolge von Zahlen
Die erste Zeile ist wie folgt zu lesen: Führe die nachfolgenden eingerückten
Anweisungen für jede Zahl in der Abfolge 2, 7.5 und –22 aus. Nenne diese
Zahl in diesen Anweisungen i. Nach der Zahlenfolge muss, ebenso wie bei
if-else, ein Doppelpunkt notiert werden. Anstelle von i können Sie auch
eine andere Variable als Schleifenvariable nutzen. Die Zahlen werden zusammen mit einem kurzen Informationstext ausgegeben bzw. quadriert
und ausgegeben.
Hinweis
Eine solche Abfolge von Objekten, die zum Beispiel in einer for-Schleife
durchlaufen werden kann, nennt man auch iterierbares Objekt oder kurz
Iterable. Diese Iterables werden uns in Python noch häufig begegnen. Den
Vorgang des Durchlaufens nennt man auch Iterieren.
3.4.2 Schleifenabbruch mit »break«
break
Die Anweisung break bietet eine weitere Möglichkeit zur Steuerung von
Schleifen. Sie führt zu einem unmittelbaren Abbruch einer Schleife. Sie
wird sinnvollerweise mit einer Bedingung verbunden und häufig bei Sonderfällen eingesetzt. Ein Beispiel:
for i in 12, -4, 20, 7:
if i*i > 200:
break
print("Zahl:", i, ", Quadrat:", i*i)
print("Ende")
Listing 3.13 Datei schleife_break.py
Diese Ausgabe wird erzeugt:
Zahl: 12 , Quadrat: 144
Zahl: –4 , Quadrat: 16
Ende
Schleife verlassen
52
Die Schleife wird unmittelbar verlassen, wenn das Quadrat der aktuellen
Zahl größer als 200 ist. Die Ausgabe innerhalb der Schleife erfolgt auch
nicht mehr. Das Programm wird nach der Schleife fortgesetzt.
Schleifen
3.4.3 Geschachtelte Kontrollstrukturen
Wie das vorherige Programm verdeutlicht, können Kontrollstrukturen
(also Verzweigungen und Schleifen) auch geschachtelt werden. Dies bedeutet, dass eine Kontrollstruktur eine weitere Kontrollstruktur enthält. Diese
kann ihrerseits wiederum eine Kontrollstruktur enthalten usw. Ein weiteres Beispiel:
3
for x in -2, -1, 0, 1, 2:
if x > 0:
print(x, "positiv")
else:
if x < 0:
print(x, "negativ")
else:
print(x, "gleich 0")
Listing 3.14 Datei schachtelung.py
Es wird diese Ausgabe erzeugt:
–2 negativ
–1 negativ
0 gleich 0
1 positiv
2 positiv
Zur Erläuterung:
왘 Die äußerste Kontrollstruktur ist eine for-Schleife. Alle einfach eingerückten Anweisungen werden – gemäß der Schleifensteuerung – mehrmals ausgeführt.
Äußeres for
왘 Mit der äußeren if-Anweisung wird die erste Verzweigung eingeleitet.
Ist x größer als 0, wird die folgende zweifach eingerückte Anweisung
ausgeführt. Ist x nicht größer als 0, wird die innere if-Anweisung hinter
der äußeren else-Anweisung untersucht.
Äußeres if
왘 Trifft die Bedingung der inneren if-Anweisung zu, werden die folgenden dreifach eingerückten Anweisungen ausgeführt. Trifft sie nicht zu,
werden die dreifach eingerückten Anweisungen ausgeführt, die der inneren else-Anweisung folgen.
Inneres if
Zu beachten sind besonders die mehrfachen Einrückungen, damit die Tiefe
der Kontrollstruktur von Python richtig erkannt werden kann.
Mehrfach einrücken
53
3
3.4
Programmierkurs
Nach einem Doppelpunkt hinter dem Kopf einer Kontrollstruktur wird in
der Entwicklungsumgebung IDLE automatisch mit einem Tabulatorsprung
eingerückt. Dieser Sprung erzeugt standardmäßig vier Leerzeichen, dadurch werden die Kontrollstrukturen für den Entwickler klar erkennbar.
Mindestens ein
Leerzeichen
Falls Sie mit einem anderen Editor arbeiten, müssen Sie darauf achten, dass
um mindestens ein Leerzeichen eingerückt wird, damit Python die Kontrollstruktur erkennt. Sinnvoller ist eine Einrückung um zwei oder mehr
Leerzeichen, damit die Struktur auch für den Entwickler gut erkennbar ist.
3.4.4 Spiel, Version mit for-Schleife und Abbruch
Vier Versuche
Die for-Schleife wird nun dazu genutzt, die Eingabe und die Bewertung des
Kopfrechenspiels insgesamt viermal zu durchlaufen. Der Benutzer hat somit vier Versuche, das richtige Ergebnis zu ermitteln. Die Anweisung break
dient zum Abbruch der Schleife, sobald der Benutzer das richtige Ergebnis
eingegeben hat.
# Zufallsgenerator
import random
random.seed()
# Werte und Berechnung
a = random.randint(1,10)
b = random.randint(1,10)
c = a + b
print("Die Aufgabe:", a, "+", b)
# Schleife mit for
for i in 1, 2, 3, 4:
# Eingabe
print("Bitte eine Zahl eingeben:")
z = input()
zahl = int(z)
# Verzweigung
if zahl == c:
print(zahl, "ist richtig")
# Abbruch der Schleife
break
54
Schleifen
else:
print(zahl, "ist falsch")
# Ende
print("Ergebnis: ", c)
3
Listing 3.15 Datei spiel_for.py
Folgende Ausgabe wird erzeugt:
Die Aufgabe: 7 + 9
Bitte eine Zahl eingeben:
12
12 ist falsch
Bitte eine Zahl eingeben:
16
16 ist richtig
Ergebnis: 16
Die Aufgabe wird einmal ermittelt und gestellt. Der Benutzer wird maximal viermal dazu aufgefordert, ein Ergebnis einzugeben. Jede seiner Eingaben wird bewertet. Ist bereits einer der ersten drei Versuche richtig, wird
die Schleife vorzeitig abgebrochen.
Maximal viermal
3.4.5 for-Schleife mit »range()«
Meist werden Schleifen für regelmäßige Abfolgen von Zahlen genutzt.
Dabei erweist sich der Einsatz der Funktion range() als sehr nützlich. Ein
Beispiel:
range()
for i in range(3,11,2):
print("Zahl:", i, "Quadrat:", i*i)
Listing 3.16 Datei range_drei.py
Es wird diese Ausgabe erzeugt:
Zahl: 3 Quadrat: 9
Zahl: 5 Quadrat: 25
Zahl: 7 Quadrat: 49
Zahl: 9 Quadrat: 81
55
3
3.4
Programmierkurs
Ganze Zahlen
Der englische Begriff range bedeutet »Bereich«. Innerhalb der Klammern
hinter range können bis zu drei ganze Zahlen, durch Kommata getrennt,
eingetragen werden:
Beginn
왘 Die erste ganze Zahl (hier 3) gibt den Beginn des Bereichs an, für den die
folgenden Anweisungen ausgeführt werden.
Ende
왘 Die zweite ganze Zahl (hier 11) kennzeichnet das Ende des Bereichs. Es ist
die erste Zahl, für die die Anweisungen nicht mehr ausgeführt werden.
Schrittweite
왘 Die dritte ganze Zahl (hier 2) gibt die Schrittweite für die Schleife an. Die
Zahlen, für die die Anweisungen ausgeführt werden, stehen zueinander
also jeweils im Abstand von +2.
Der Aufruf der Funktion range() mit den Zahlen 3, 11 und 2 ergibt somit die
Abfolge: 3, 5, 7, 9.
Schrittweite 1
Zahl: 0
Zahl: 1
Zahl: 2
Bei der Funktion range() können eine oder mehrere der drei Zahlen auch
negativ sein. Achten Sie auf sinnvolle Zahlenkombinationen. Die Angabe
range(3,-11,2) ist nicht sinnvoll, da man von der Zahl +3 in Schritten
von +2 nicht zur Zahl –11 gelangt. Python fängt solche Schleifen ab und
lässt sie nicht ausführen. Dasselbe gilt für die Zahlenkombination
range(3,11,-2).
for i in range(5,9):
print("Zahl:", i)
# 1. Version
for x in range(18,22):
print(x/10)
print()
Zahl: 5
Zahl: 6
Zahl: 7
Zahl: 8
Wird die Funktion range() sogar nur mit einer Zahl aufgerufen, so wird diese Zahl einfach als die obere Grenze angesehen. Als untere Grenze gilt 0.
Außerdem wird wiederum eine Schrittweite von 1 angenommen. Ein Beispiel:
for i in range(3):
print("Zahl:", i)
3
Hinweis
Für den regelmäßigen Ablauf von Zahlen mit Nachkommastellen muss die
Schleifenvariable passend umgerechnet werden. Ein Beispiel:
Es wird folgende Ausgabe erzeugt:
Beginn bei 0
Die Ausgabe:
Wird die Funktion range() nur mit zwei Zahlen aufgerufen, so wird eine
Schrittweite von 1 angenommen. Ein Beispiel:
Listing 3.17 Datei range_zwei.py
Schleifen
Sinnvolle
Kombinationen
Keine ganze Zahl
# 2. Version
x = 1.8
for i in range(4):
print(x)
x = x + 0.1
Listing 3.19 Datei range_nachkomma.py
Die Ausgabe lautet:
1.8
1.9
2.0
2.1
Listing 3.18 Datei range_eins.py
1.8
1.9000000000000001
2.0
2.1
56
57
3
3.4
Programmierkurs
Es werden jeweils die Zahlen von 1,8 bis 2,1 in Schritten von 0,1 erzeugt.
3.4.6 Spiel, Version mit »range()«
왘 In der ersten Version werden die ganzen Zahlen von 18 bis 21 erzeugt
und anschließend durch 10 geteilt.
Im Kopfrechenspiel wird die Schleife zur Wiederholung der Eingabe nun
mithilfe von range() gebildet. Gleichzeitig haben Sie damit einen Zähler,
der die laufende Nummer des Versuchs enthält. Sie können ihn verwenden, um dem Benutzer die Anzahl der Versuche mitzuteilen.
왘 In der zweiten Version wird mit dem ersten Wert begonnen und innerhalb der Schleife jeweils um 0,1 erhöht. Dabei müssen Sie vorher errechnen, wie häufig die Schleife durchlaufen werden muss.
Übung u_range
Schleife erkennen
Ermitteln Sie durch Überlegen (nicht durch einen einfachen Aufruf) die
Ausgabe des folgenden Programms (Datei u_range.py).
print("Schleife 1")
for i in 2, 3, 6.5, –7:
print(i)
print("Schleife 2")
for i in range(3,11,3):
print(i)
print("Schleife 3")
for i in range(-3,14,4):
print(i)
print("Schleife 4")
for i in range(3,-11,-3):
print(i)
Übung u_range_inch
Schreiben Sie ein Programm, das die folgende Ausgabe erzeugt (Datei u_
range_inch.py).
15 Inch = 38.1 cm
20 Inch = 50.8 cm
25 Inch = 63.5 cm
30 Inch = 76.2 cm
35 Inch = 88.9 cm
40 Inch = 101.6 cm
Es handelt sich um eine regelmäßige Liste von Inch-Werten, für die der
jeweilige Zentimeter-Wert durch Umrechnung mit dem Faktor 2,54 ermittelt wird. Es ist keine Eingabe durch den Anwender notwendig.
58
Schleifen
Mit Zähler
3
# Zufallsgenerator
import random
random.seed()
# Werte und Berechnung
a = random.randint(1,10)
b = random.randint(1,10)
c = a + b
print("Die Aufgabe:", a, "+", b)
# Schleife mit range
for versuch in range(1,10):
# Eingabe
print("Bitte eine Zahl eingeben:")
z = input()
zahl = int(z)
# Verzweigung
if zahl == c:
print(zahl, "ist richtig")
# Abbruch der Schleife
break
else:
print(zahl, "ist falsch")
# Anzahl ausgeben
print("Ergebnis: ", c)
print("Anzahl Versuche:", versuch)
Listing 3.20 Datei spiel_range.py
Die Ausgabe lautet:
Die Aufgabe: 10 + 5
Bitte eine Zahl eingeben:
59
3
3.4
Programmierkurs
13
13 ist falsch
Bitte eine Zahl eingeben:
15
15 ist richtig
Ergebnis: 15
Anzahl Versuche: 2
Zähler
Der Benutzer hat maximal neun Versuche: range(1,10). Die Variable versuch dient als Zähler für die Versuche. Nach Eingabe der richtigen Lösung
(oder nach vollständigem Durchlauf der Schleife) wird dem Benutzer die
Anzahl der Versuche mitgeteilt.
3.4.7 while-Schleife
Bedingte Schleife
Die while-Schleife dient zur Steuerung einer Wiederholung mithilfe einer
Bedingung. Im folgenden Programm werden zufällige Zahlen addiert und
ausgegeben. Solange die Summe der Zahlen kleiner als 30 ist, wird der Vorgang wiederholt. Ist die Summe gleich oder größer als 30, wird das Programm beendet.
# Zufallsgenerator
import random
random.seed()
Zahl: 5 Zwischensumme: 16
Zahl: 8 Zwischensumme: 24
Zahl: 7 Zwischensumme: 31
Ende
Die while-Anweisung leitet die Schleife ein. Die wörtliche Übersetzung der
Zeile lautet: solange die Summe kleiner als 30 ist. Dies bezieht sich auf die
nachfolgenden eingerückten Anweisungen.
Einrücken
Nach dem Wort while folgt (wie bei einer if-Anweisung) eine Bedingung,
die mithilfe von Vergleichsoperatoren erstellt wird. Auch hier dürfen Sie
den Doppelpunkt am Ende der Zeile nicht vergessen, ähnlich wie bei ifelse und for.
Doppelpunkt
Es wird eine zufällige Zahl ermittelt und zur bisherigen Summe addiert. Die
neue Summe errechnet sich also aus der alten Summe plus der eingegebenen Zahl. Die neue Summe wird ausgegeben.
Summierung
Die Anweisung zur Ausgabe des Texts »Ende« wird erst erreicht, wenn die
Summe den Wert 30 erreicht oder überschritten hat.
Ende der Schleife
3.4.8 Spiel, Version mit while-Schleife und Zähler
# Initialisierung
summe = 0
# while-Schleife
while summe < 30:
zzahl = random.randint(1,8)
summe = summe + zzahl
print("Zahl:", zzahl, "Zwischensumme:", summe)
# Zufallsgenerator
import random
random.seed()
Listing 3.21 Datei schleife_while.py
3
Zunächst wird die Variable für die Summe der Zahlen auf 0 gesetzt.
Die while-Schleife wird nun auch im Kopfrechenspiel zur Wiederholung
der Eingabe genutzt. Der Benutzer hat beliebig viele Versuche, die Aufgabe
zu lösen. Die Variable versuch, die als Zähler für die Versuche dient, muss
separat gesteuert werden. Sie ist nicht mehr automatisch eine Schleifenvariable.
print("Ende")
Schleifen
Solange Eingabe
falsch
# Werte und Berechnung
a = random.randint(1,10)
b = random.randint(1,10)
c = a + b
print("Die Aufgabe:", a, "+", b)
Eine mögliche Ausgabe des Programms sähe wie folgt aus:
Zahl: 3 Zwischensumme: 3
Zahl: 8 Zwischensumme: 11
60
# Schleife initialisieren
zahl = c + 1
61
3
3.5
Programmierkurs
# Anzahl initialisieren
versuch = 0
# Schleife mit while
while zahl != c:
# Anzahl Versuche
versuch = versuch + 1
# Eingabe mit Umwandlung
print("Bitte eine Zahl eingeben:")
z = input()
zahl = int(z)
# Verzweigung
if zahl == c:
print(zahl, "ist richtig")
else:
print(zahl, "ist falsch")
# Anzahl ausgeben
print("Ergebnis: ", c)
print("Anzahl Versuche:", versuch)
Listing 3.22 Datei spiel_while.py
Die Ausgabe hat sich nicht geändert.
Anzahl der Versuche
Der Benutzer hat beliebig viele Versuche. Die while-Schleife läuft, solange
die richtige Lösung nicht ermittelt wird. Die Variable zahl wird mit einem
Wert vorbesetzt, der dafür sorgt, dass die while-Schleife mindestens einmal
läuft. Die Variable versuch wird mit 0 vorbesetzt und dient als laufende
Nummer. Nach Eingabe der richtigen Lösung wird dem Benutzer die Anzahl der Versuche mitgeteilt.
Übung u_while
Ende mit 0
62
Schreiben Sie ein Programm (Datei u_while.py), das den Anwender wiederholt dazu auffordert, einen Wert in Inch einzugeben. Der eingegebene
Wert soll anschließend in Zentimeter umgerechnet und ausgegeben werden. Das Programm soll nach der Eingabe des Werts 0 beendet werden.
Entwicklung eines Programms
Bei einer while-Schleife wird immer angegeben, gemäß welcher Bedingung wiederholt werden soll, und nicht, gemäß welcher Bedingung beendet werden soll. Daher müssen Sie in diesem Programm formulieren:
Solange die Eingabe ungleich 0 ist.
3
3.5 Entwicklung eines Programms
Bei der Entwicklung Ihrer eigenen Programme sollten Sie Schritt für Schritt
vorgehen. Stellen Sie zuerst einige Überlegungen dazu an, wie das gesamte
Programm aufgebaut sein sollte, und zwar auf Papier. Aus welchen Teilen
sollte es nacheinander bestehen? Versuchen Sie anschließend nicht, das
gesamte Programm mit all seinen komplexen Bestandteilen auf einmal zu
schreiben! Dies ist der größte Fehler, den Einsteiger (und manchmal auch
Fortgeschrittene) machen können.
Teile eines
Programms
Schreiben Sie zunächst eine einfache Version des ersten Programmteils.
Anschließend testen Sie sie. Erst nach einem erfolgreichen Test fügen Sie
den folgenden Programmteil hinzu. Nach jeder Änderung testen Sie wiederum. Sollte sich ein Fehler zeigen, wissen Sie, dass er aufgrund der letzten
Änderung aufgetreten ist. Nach dem letzten Hinzufügen haben Sie eine
einfache Version Ihres gesamten Programms erstellt.
Einfache
Version
Nun ändern Sie einen Teil Ihres Programms in eine komplexere Version ab.
Auf diese Weise machen Sie Ihr Programm Schritt für Schritt komplexer,
bis Sie schließlich das gesamte Programm so erstellt haben, wie es Ihren
anfänglichen Überlegungen auf Papier entspricht.
Komplexe Version
Manchmal ergibt sich während der praktischen Programmierung noch die
eine oder andere Änderung gegenüber Ihrem Entwurf. Das ist kein Problem, solange sich nicht der gesamte Aufbau ändert. Sollte dies allerdings
der Fall sein, kehren Sie noch einmal kurz zum Papier zurück und überdenken den Aufbau. Das bedeutet nicht, dass Sie die bisherigen Programmzeilen löschen müssen, sondern möglicherweise nur ein wenig ändern und
anders anordnen.
Änderungen
Schreiben Sie Ihre Programme übersichtlich. Falls Sie gerade überlegen,
wie Sie drei, vier bestimmte Schritte Ihres Programms auf einmal machen
können: Machen Sie daraus einfach einzelne Anweisungen, die der Reihe
nach ausgeführt werden. Dies vereinfacht eine eventuelle Fehlersuche.
Einzelne Schritte
63
3
3.6
Programmierkurs
Wenn Sie (oder eine andere Person) Ihr Programm später einmal ändern
oder erweitern möchten, gelingt der Einstieg in den Aufbau des Programms wesentlich schneller.
Kontrolle
Sie können die Funktion print() zur Kontrolle von Werten und zur Suche
von logischen Fehlern einsetzen. Zusätzlich können Sie einzelne Zeilen Ihres Programms als Kommentar kennzeichnen, um festzustellen, welcher
Teil des Programms fehlerfrei läuft und welcher Teil demnach fehlerbehaftet ist.
3.6 Fehler und Ausnahmen
Fehler
Macht der Anwender nach einer Eingabeaufforderung eine falsche Eingabe
(gibt er zum Beispiel keine Zahl, sondern einen Text ein), wird das Programm mit einer Fehlermeldung beendet. Bisher gehe ich vereinfacht
davon aus, dass der Anwender korrekte Eingaben vornimmt. In diesem
Abschnitt beschreibe ich, wie Sie Fehler vermeiden oder abfangen.
Fehler und Ausnahmen
Gibt der Anwender eine Zahl (zum Beispiel 12) ein, läuft das Programm fehlerfrei bis zum Ende und erzeugt die folgende Ausgabe:
Richtige Eingabe
Bitte geben Sie eine ganze Zahl ein
12
Sie haben die ganze Zahl 12 richtig eingegeben
Ende des Programms
Macht der Anwender jedoch eine falsche Eingabe (zum Beispiel 3a), bricht
das Programm vorzeitig ab und erzeugt die folgende Ausgabe:
3
Falsche Eingabe
Bitte geben Sie eine ganze Zahl ein
3a
Traceback (most recent call last):
File "C:\Python36\Beispiele\fehler_basis.py", line 6, in <module>
zahl = int(z)
ValueError: invalid literal for int() with base 10: '3a'
Diese Informationen weisen auf die Stelle im Programm hin, an der der
Fehler bemerkt wird (Datei fehler_basis.py, Zeile 6). Außerdem wird die Art
des Fehlers mitgeteilt (ValueError).
Fehlerstelle
3.6.1 Basisprogramm
Abbruch möglich
Durch das Abfangen von falschen Eingaben wird die Benutzung eines Programms für den Anwender deutlich komfortabler. Im folgenden Programm soll eine ganze Zahl eingegeben werden. Da der Benutzer dieses
Programm durch die Eingabe von Text oder Sonderzeichen zum Abbruch
bringen kann, wird es immer weiter verbessert.
3.6.2 Fehler abfangen
Zunächst soll eine Fehleingabe abgefangen werden, um einen Abbruch des
Programms zu vermeiden. Zu diesem Zweck müssen Sie die Stelle herausfinden, an der eine Fehleingabe auftreten kann. Hier müssen Sie das Programm verbessern.
Verbessern
# Eingabe
print("Bitte geben Sie eine ganze Zahl ein")
z = input()
Das Programm soll zukünftig an dieser Stelle alle Arten von Fehlern abfangen, die Python automatisch erkennen kann. Dies erreichen Sie in einem
ersten Schritt durch die folgende Änderung:
Fehler abfangen
# Umwandlung
zahl = int(z)
# Eingabe
print("Bitte geben Sie eine ganze Zahl ein")
z = input()
# Ausgabe
print("Sie haben die ganze Zahl", zahl, "richtig eingegeben")
print("Ende des Programms")
Listing 3.23 Datei fehler_basis.py
64
# Versuch der Umwandlung
try:
zahl = int(z)
print("Sie haben die ganze Zahl", zahl, "richtig eingegeben")
65
3
3.6
Programmierkurs
# Fehler bei Umwandlung
except:
print("Sie haben die ganze Zahl nicht richtig eingegeben")
print("Ende des Programms")
Listing 3.24 Datei fehler_abfangen.py
Kein Abbruch mehr
Wenn der Anwender eine richtige ganze Zahl eingibt, läuft das Programm
wie bisher. Bei einer falschen Eingabe erscheint nun eine entsprechende
Meldung. Das Programm bricht jedoch nicht ab, sondern läuft bis zum
Ende.
Bitte geben Sie eine ganze Zahl ein
3a
Sie haben die ganze Zahl nicht richtig eingegeben
Ende des Programms
try
Die Anweisung try leitet eine Ausnahmebehandlung ein. Ähnlich wie bei
der if-Anweisung gibt es verschiedene Zweige, die das Programm durchlaufen kann. Das Programm versucht (englisch: try), die Anweisungen
durchzuführen, die eingerückt nach try stehen. Falls die Eingabe erfolgreich ist, wird der except-Zweig nicht ausgeführt, ähnlich wie beim elseZweig der if-Anweisung.
except
Ist die Eingabe dagegen nicht erfolgreich und handelt es sich um einen Fehler, wird der Fehler oder die Ausnahme (englisch: exception) mit der Anweisung except abgefangen. In diesem Fall werden alle eingerückten Anweisungen im except-Zweig durchgeführt. Das Programm läuft ohne Abbruch
zu Ende, da der Fehler zwar auftritt, aber abgefangen wird.
Nach try und except muss jeweils ein Doppelpunkt gesetzt werden, wie bei
if-else, for oder while.
Hinweise
Kritische Zeile
66
Nur die kritische Zeile wird in die Ausnahmebehandlung eingebettet. Sie
sollten sich also Gedanken darüber machen, welche Stellen Ihres Programms fehlerträchtig sind. Eine Eingabeaufforderung ist solch eine kritische Stelle. Andere Fehlermöglichkeiten sind zum Beispiel die Bearbeitung
einer Datei (die möglicherweise nicht existiert) oder die Ausgabe an einen
Drucker (der vielleicht nicht eingeschaltet ist).
Fehler und Ausnahmen
3.6.3 Eingabe wiederholen
In einem zweiten Schritt wird dafür gesorgt, dass der Anwender nach einer
falschen Eingabe eine erneute Eingabe machen kann. Der gesamte Eingabevorgang mit Ausnahmebehandlung wird so lange wiederholt, bis sie erfolgreich war. Betrachten Sie das folgende Programm:
Erneute Eingabe
3
# Initialisierung der while-Schleife
fehler = 1
# Schleife bei falscher Eingabe
while fehler == 1:
# Eingabe
print("Bitte geben Sie eine ganze Zahl ein")
z = input()
# Versuch der Umwandlung
try:
zahl = int(z)
print("Sie haben die ganze Zahl", zahl,
"richtig eingegeben")
fehler = 0
# Fehler bei Umwandlung
except:
print("Sie haben die ganze Zahl nicht"
" richtig eingegeben")
print("Ende des Programms")
Listing 3.25 Datei fehler_eingabe_neu.py
Hinweis
Beachten Sie die doppelte Einrückung: einmal nach while und noch einmal nach try-except.
Nachfolgend wird eine mögliche Eingabe gezeigt – zunächst mit einem
Fehler, anschließend fehlerfrei:
Bitte geben Sie eine ganze Zahl ein
3a
Sie haben die ganze Zahl nicht richtig eingegeben
67
3
3.6
Programmierkurs
Bitte geben Sie eine ganze Zahl ein
12
Sie haben die ganze Zahl 12 richtig eingegeben
Ende des Programms
Eingabe
wiederholen
Die Variable fehler ist notwendig, um die Eingabe gegebenenfalls wiederholen zu können. Sie wird zunächst auf den Wert 1 gesetzt. Es wird eine
while-Schleife formuliert, in der der Eingabevorgang mit der Ausnahmebehandlung eingebettet ist. Die Schleife wird wiederholt, solange die Variable
fehler den Wert 1 hat.
Eingabe erfolgreich?
Ist die Eingabe erfolgreich, wird die Variable fehler auf 0 gesetzt. Das führt
dazu, dass die Schleife beendet wird und das Programm regulär fortfahren
kann. Ist die Eingabe nicht erfolgreich, hat fehler nach wie vor den Wert 1:
Der Eingabevorgang wird wiederholt.
Fehler und Ausnahmen
Die Ausgabe dieses Programms ist:
Zahl: 1
Quadrat: 1
Zahl: 2
Quadrat: 4
Zahl: 3
Zahl: 4
Zahl: 5
Zahl: 6
Quadrat: 36
Die Schleife durchläuft alle Zahlen von 1 bis 6. Alle diese Zahlen werden
auch ausgegeben. Liegt die aktuelle Zahl zwischen 3 und 5, wird der Rest der
Schleife übergangen und unmittelbar der nächste Schleifendurchlauf begonnen. Anderenfalls wird das Quadrat der Zahl ausgegeben.
3
Rest übergehen
Übung u_fehler
Verbessern Sie das Programm zur Eingabe und Umrechnung eines beliebigen Inch-Werts in Zentimeter. Eingabefehler des Anwenders sollen abgefangen werden. Das Programm soll den Anwender so lange zur Eingabe
auffordern, bis sie erfolgreich war (Datei u_ fehler.py).
3.6.4 Exkurs: Schleifenfortsetzung mit »continue«
break
continue
An dieser Stelle möchte ich auf ein Thema zurückkommen, das bereits in
Abschnitt 3.4, »Schleifen«, behandelt wurde. Sie kennen aus diesem Abschnitt die Anweisung break, die zum unmittelbaren Abbruch einer Schleife führt.
Die Anweisung continue dient zum unmittelbaren Abbruch des aktuellen
Durchlaufs einer Schleife. Die Schleife wird anschließend mit dem nächsten Durchlauf fortgesetzt. Betrachten Sie hierzu das folgende Programm:
for i in range (1,7):
print("Zahl:", i)
if 3 <= i <= 5:
continue
print("Quadrat:", i*i)
Listing 3.26 Datei schleife_continue.py
68
3.6.5 Spiel, Version mit Ausnahmebehandlung
Die Ausnahmebehandlung und die Anweisung continue werden nun auch
im Kopfrechenspiel eingesetzt. Damit kann ein Eingabefehler abgefangen
und das Programm regulär fortgesetzt werden.
Fehler abfangen
# Zufallsgenerator
import random
random.seed()
# Werte und Berechnung
a = random.randint(1,10)
b = random.randint(1,10)
c = a + b
print("Die Aufgabe:", a, "+", b)
# Schleife und Anzahl initialisieren
zahl = c + 1
versuch = 0
# Schleife mit while
while zahl != c:
# Anzahl Versuche
versuch = versuch + 1
69
3
3.7
Programmierkurs
# Eingabe
print("Bitte eine ganze Zahl eingeben:")
z = input()
Funktionen und Module
entsprechende Meldung. Der Rest der Schleife wird übergangen, und die
nächste Eingabe wird unmittelbar angefordert.
3
# Versuch einer Umwandlung
try:
zahl = int(z)
except:
# Falls Umwandlung nicht erfolgreich
print("Sie haben keine ganze Zahl eingegeben")
# Schleife unmittelbar fortsetzen
continue
# Verzweigung
if zahl == c:
print(zahl, "ist richtig")
else:
print(zahl, "ist falsch")
# Anzahl Versuche
print("Ergebnis: ", c)
print("Anzahl Versuche:", versuch)
Listing 3.27 Datei spiel_ausnahme.py
Es wird die folgende Ausgabe erzeugt:
Die Aufgabe: 8 + 3
Bitte eine ganze Zahl eingeben:
12
12 ist falsch
Bitte eine ganze Zahl eingeben:
11a
Sie haben keine ganze Zahl eingegeben
Bitte eine ganze Zahl eingeben:
11
11 ist richtig
Ergebnis: 11
Anzahl Versuche: 3
Falsche Eingabe
70
Die Umwandlung der Eingabe steht in einem try-except-Block. Falls die
Umwandlung aufgrund einer falschen Eingabe nicht gelingt, erscheint eine
3.7 Funktionen und Module
Die Modularisierung, also die Zerlegung eines Programms in selbst geschriebene Funktionen, bietet besonders bei größeren Programmen unübersehbare Vorteile:
Modularisierung
왘 Programmteile, die mehrmals benötigt werden, müssen nur einmal definiert werden.
Mehrfach
verwenden
왘 Nützliche Programmteile können in mehreren Programmen verwendet
werden.
왘 Umfangreiche Programme können in übersichtliche Teile zerlegt werden.
Übersichtlicher
왘 Pflege und Wartung von Programmen werden erleichtert.
왘 Der Programmcode ist für den Programmierer selbst (zu einem späteren Zeitpunkt) und für andere Programmierer leichter zu verstehen.
Verständlicher
Neben den selbst geschriebenen Funktionen gibt es in Python, wie in jeder
anderen Programmiersprache auch, zahlreiche vordefinierte Funktionen,
die dem Entwickler viel Arbeit abnehmen können. Diese Funktionen sind
entweder fest eingebaut oder über die Einbindung spezieller Module verfügbar.
Vordefinierte
Funktionen
Als Beispiel für eine fest eingebaute Funktion wird bereits input() eingesetzt. Jede Funktion hat eine spezielle Aufgabe. So hält beispielsweise die
Funktion input() das Programm an und nimmt eine Eingabe entgegen.
Aufgabe einer
Funktion
Wie viele (aber nicht alle) Funktionen hat input() einen sogenannten Rückgabewert, liefert also ein Ergebnis an die Stelle des Programms zurück, von
der sie aufgerufen wird: die eingegebene Zeichenkette.
Rückgabewert
Es folgen zwei Hinweise für fortgeschrittene Leser, die bereits mit einer anderen Programmiersprache gearbeitet haben:
왘 Funktionen können in Python nicht überladen werden. Falls Sie eine
Funktion mehrfach definieren, gegebenenfalls mit unterschiedlichen
Parametern, so gilt nur die jeweils letzte Definition.
Nicht überladen
왘 Seit Python 3.5 können Sie angeben, welchen Datentyp der Rückgabewert einer Funktion haben soll. Allerdings haben diese Typhinweise
Typhinweise
71
3
3.7
Programmierkurs
(englisch: type hints), auch Annotationen genannt, bisher nur provisorischen Charakter. Ihre Regeln können sich noch ändern und sind nicht
bindend. Daher werden sie in diesem Buch nicht weiter erläutert.
3.7.1 Einfache Funktionen
Immer gleich
Einfache Funktionen führen bei Aufruf stets die gleiche Aktion aus. Im folgenden Beispiel führt jeder Aufruf der Funktion stern() dazu, dass eine optische Trennung auf dem Bildschirm ausgegeben wird:
# Definition der Funktion
def stern():
print("-----------------")
print("*** Trennung ****")
print("-----------------")
# Hauptprogramm
x = 12
y = 5
stern()
print("x =", x, ", y =", y)
stern()
print("x + y =", x + y)
stern()
print("x - y =", x - y)
stern()
# 1. Aufruf
# 2. Aufruf
# 3. Aufruf
# 4. Aufruf
Listing 3.28 Datei funktion_einfach.py
Funktionen und Module
x–y=7
---------------------*** Trennung ****
----------------------
3
Im oberen Teil des Programms wird die Funktion stern() definiert. Nach
der Anweisung def folgt der Name der Funktion (hier stern), anschließend
folgen runde Klammern und der bereits bekannte Doppelpunkt. Innerhalb
der Klammern könnten Werte an die Funktion übergeben werden. Dazu
mehr in Abschnitt 3.7.2 und in Abschnitt 3.7.3. Die nachfolgenden eingerückten Anweisungen werden jedes Mal durchgeführt, wenn die Funktion
aufgerufen wird.
Definition mit def
Eine Funktion wird zunächst nur definiert und nicht durchgeführt. Sie
steht sozusagen zum späteren Gebrauch bereit. Im unteren Teil der Datei
beginnt das eigentliche Programm. Es werden einige Rechenoperationen
mit zwei Variablen durchgeführt. Mithilfe der Funktion stern() werden die
Ausgabezeilen optisch voneinander getrennt. Sie wird insgesamt viermal
aufgerufen. Nach Bearbeitung der Funktion fährt das Programm jedes Mal
mit der Anweisung fort, die dem Aufruf der Funktion folgt.
Aufruf
Eine Funktion wird aufgerufen, indem Sie ihren Namen, gefolgt von runden Klammern, notieren. Falls Sie Informationen an die Funktion übergeben möchten, notieren Sie sie innerhalb der runden Klammern.
Klammern
Den Namen einer Funktion können Sie weitgehend frei wählen – es gelten
die gleichen Regeln wie bei den Namen von Variablen, siehe auch Abschnitt 2.1.5: Der Name kann aus den Buchstaben a bis z, A bis Z, aus Ziffern
und dem Zeichen _ (Unterstrich) bestehen. Er darf nicht mit einer Ziffer beginnen und keinem reservierten Wort in Python entsprechen.
Name
Folgende Ausgabe wird erzeugt:
---------------------*** Trennung ****
---------------------x = 12 , y = 5
---------------------*** Trennung ****
---------------------x + y = 17
---------------------*** Trennung ****
----------------------
72
3.7.2 Funktionen mit einem Parameter
Bei einem Aufruf können auch Informationen an Funktionen übermittelt
werden, sogenannte Parameter. Diese Informationen können innerhalb
der Funktion ausgewertet werden und führen gegebenenfalls bei jedem
Aufruf zu unterschiedlichen Ergebnissen. Ein Beispiel:
Parameter
# Definition der Funktion
def quadrat(x):
q = x*x
print("Zahl:", x, "Quadrat:", q)
73
3
3.7
Programmierkurs
# Hauptprogramm
quadrat(4.5)
a = 3
quadrat(a)
quadrat(2*a)
Listing 3.29 Datei parameter.py
Die Ausgabe lautet:
Zahl: 4.5 Quadrat: 20.25
Zahl: 3 Quadrat: 9
Zahl: 6 Quadrat: 36
Wertübermittlung
Die Definition der Funktion quadrat() enthält eine Variable innerhalb der
Klammern. Beim Aufruf wird ein Wert an die Funktion übermittelt und
dieser Variablen zugewiesen. Hier sind das die folgenden Werte:
왘 Die Zahl 4,5 – die Variable x erhält in der Funktion den Wert 4.5.
3.7.3 Funktionen mit mehreren Parametern
Eine Funktion kann noch vielseitiger werden, wenn Sie ihr mehrere Parameter übermitteln. Dabei ist auf die übereinstimmende Anzahl und die
richtige Reihenfolge der Parameter zu achten. Ein Beispiel:
Listing 3.30 Datei parameter_mehrere.py
Die Ausgabe lautet:
왘 Das Ergebnis einer Berechnung – die Variable x erhält in der Funktion
den aktuellen Wert von 2 * a, also 6.
Es werden genau drei Parameter erwartet, bei beiden Aufrufen werden
auch drei Werte übermittelt. Wie Sie am Ergebnis erkennen, ist die Reihenfolge der Parameter wichtig.
Übung u_parameter
Es soll wiederum der Steuerbetrag für verschiedene Bruttogehälter
berechnet werden (Datei u_parameter.py). Liegt das Gehalt über 2.500 €,
sind 22 % Steuern zu zahlen, ansonsten 18 %. Die Berechnung und die Ausgabe des Steuerbetrags sollen diesmal innerhalb einer Funktion mit dem
Namen steuer() stattfinden. Die Funktion soll für die folgenden Gehälter
aufgerufen werden: 1.800 €, 2.200 €, 2.500 €, 2.900 €.
3
# Hauptprogramm
berechnung(2,3,5)
berechnung(5,2,3)
Ergebnis: 25
Ergebnis: 21
Die Funktion erwartet genau einen Wert. Sie darf also nicht ohne einen
Wert oder mit mehr als einem Wert aufgerufen werden, sonst bricht das
Programm mit einer Fehlermeldung ab.
Anzahl,
Reihenfolge
# Definition der Funktion
def berechnung(x,y,z):
ergebnis = (x+y) * z
print("Ergebnis:", ergebnis)
왘 Die Variable a – die Variable x erhält in der Funktion den aktuellen Wert
von a, nämlich 3.
Hinweis
Anzahl der Werte
Funktionen und Module
Reihenfolge
왘 Beim ersten Aufruf erhält x den Wert 2, y den Wert 3 und z den Wert 5.
Dies ergibt die Rechnung: (2 + 3) * 5 = 25.
왘 Beim zweiten Aufruf werden dieselben Zahlen übergeben, aber in anderer Reihenfolge. Es ergibt sich die Rechnung: (5 + 2) * 3 = 21.
3.7.4 Funktionen mit Rückgabewert
Funktionen werden häufig zur Berechnung von Ergebnissen eingesetzt. Zu
diesem Zweck können Funktionen ihre Ergebnisse als sogenannte Rückgabewerte zurückliefern.
Ergebnis
Im Unterschied zu vielen anderen Programmiersprachen können Funktionen in Python mehr als einen Rückgabewert liefern. In diesem Abschnitt
werden aber zunächst nur Funktionen betrachtet werden, die genau einen
Rückgabewert zur Verfügung stellen.
Rückgabewert
Im folgenden Beispiel wird eine Funktion, die einen Rückgabewert liefert,
auf verschiedene Arten vom Hauptprogramm aus aufgerufen.
74
75
3
3.7
Programmierkurs
# Definition der Funktion
def mittelwert(x,y):
ergebnis = (x+y) / 2
return ergebnis
# Hauptprogramm
c = mittelwert(3, 9)
print("Mittelwert:", c)
x = 5
print("Mittelwert:", mittelwert(x,4))
Listing 3.31 Datei rueckgabewert.py
Diese Ausgabe wird erzeugt:
print("Die Aufgabe:", a, "+", b)
return erg
# Kommentar
def kommentar(eingabezahl, ergebnis):
if eingabezahl == ergebnis:
print(eingabezahl, "ist richtig")
else:
print(eingabezahl, "ist falsch")
# Aufgabe
c = aufgabe()
return
Innerhalb der Funktion wird zunächst das Ergebnis berechnet. Es wird anschließend mithilfe der Anweisung return an die aufrufende Stelle zurückgeliefert. Die Anweisung return beendet außerdem unmittelbar den Ablauf
der Funktion.
# Schleife und Anzahl initialisieren
zahl = c + 1
versuch = 0
Rückgabe speichern
Beim ersten Aufruf wird der Rückgabewert in der Variablen c zwischengespeichert. Er kann im weiteren Verlauf des Programms an beliebiger Stelle
verwendet werden.
Rückgabe ausgeben
Beim zweiten Aufruf geschehen zwei Dinge gleichzeitig: Die Funktion mittelwert() wird aufgerufen und liefert ein Ergebnis. Außerdem wird dieses
Ergebnis unmittelbar ausgegeben.
# Schleife mit while
while zahl != c:
# Anzahl Versuche
versuch = versuch + 1
Mit Funktionen
Das Programm mit dem Kopfrechenspiel umfasst nun zwei Funktionen;
die erste Funktion dient zur Ermittlung der Aufgabe, die zweite zur Bewertung der Eingabe:
# Aufgabe
def aufgabe():
a = random.randint(1,10)
b = random.randint(1,10)
erg = a + b
76
3
# Zufallsgenerator
import random
random.seed()
Mittelwert: 6.0
Mittelwert: 4.5
3.7.5 Spiel, Version mit Funktionen
Funktionen und Module
# Eingabe
print("Bitte eine Zahl eingeben:")
z = input()
# Versuch einer Umwandlung
try:
zahl = int(z)
except:
# Falls Umwandlung nicht erfolgreich
print("Sie haben keine Zahl eingegeben")
# Schleife unmittelbar fortsetzen
continue
# Kommentar
kommentar(zahl,c)
77
3
3.8 Das fertige Spiel
Programmierkurs
# Anzahl Versuche
print("Ergebnis: ", c)
print("Anzahl Versuche:", versuch)
Die einzelnen Abschnitte des Programms sind nummeriert. Diese Nummern finden sich in der Erläuterung wieder. In späteren Kapiteln kommen
weitere Ergänzungen hinzu. Es folgt das Programm:
Listing 3.32 Datei spiel_funktion.py
# 1: Zufallsgenerator
import random
random.seed()
Die Ausgabe hat sich nicht geändert.
aufgabe()
kommentar()
In der Funktion aufgabe() werden die beiden Zufallszahlen ermittelt, und
die Aufgabe wird auf dem Bildschirm ausgegeben. Außerdem wird das Ergebnis der Aufgabe als Rückgabewert an das Hauptprogramm zurückgeliefert.
Der Funktion kommentar() werden zwei Zahlen als Parameter übermittelt:
die Lösung des Anwenders und das richtige Ergebnis. Innerhalb der Funktion wird die eingegebene Lösung untersucht, und ein entsprechender
Kommentar wird ausgegeben. Die Funktion hat keinen Rückgabewert.
Übung u_rueckgabewert
Schreiben Sie das Programm aus Übung u_parameter um. Der Steuerbetrag soll innerhalb der Funktion steuer() berechnet und an das Hauptprogramm zurückgeliefert werden. Die Ausgabe des Werts soll im
Hauptprogramm stattfinden (Datei u_rueckgabewert.py).
3
# 2: Anzahl Aufgaben
anzahl = -1
while anzahl<0 or anzahl>10:
try:
print("Wie viele Aufgaben (1 bis 10):")
anzahl = int(input())
except:
continue
# 3: Anzahl richtige Ergebnisse
richtig = 0
# 4: Schleife mit "anzahl" Aufgaben
for aufgabe in range(1,anzahl+1):
# 5: Operatorauswahl
opzahl = random.randint(1,4)
3.8 Das fertige Spiel
Erweiterungen
Zum Abschluss des Programmierkurses erweitern wir das Kopfrechenspiel
noch etwas – dabei nutzen wir die Programmiermittel, die Ihnen inzwischen zur Verfügung stehen. Die Erweiterungen:
왘 Es werden bis zu zehn Aufgaben nacheinander gestellt. Der Benutzer
kann dabei die Anzahl selbst bestimmen.
왘 Zusätzlich zur Addition kommen die weiteren Grundrechenarten zum
Einsatz: Subtraktion, Multiplikation und Division.
왘 Die Bereiche, aus denen die zufälligen Zahlen gewählt werden, hängen
von der Rechenart ab. Bei der Multiplikation wird zum Beispiel mit kleineren Zahlen gerechnet als bei der Addition.
왘 Der Benutzer hat maximal drei Versuche pro Aufgabe.
왘 Die Anzahl der richtig gelösten Aufgaben wird ermittelt.
78
# 6: Operandenauswahl
if(opzahl == 1):
a = random.randint(-10,30)
b = random.randint(-10,30)
op = "+"
c = a + b
elif(opzahl == 2):
a = random.randint(1,30)
b = random.randint(1,30)
op = "-"
c = a - b
elif(opzahl == 3):
a = random.randint(1,10)
b = random.randint(1,10)
79
3
3.8 Das fertige Spiel
Programmierkurs
op = "*"
c = a * b
# 7: Sonderfall Division
elif(opzahl == 4):
c = random.randint(1,10)
b = random.randint(1,10)
op = "/"
a = c * b
# 8: Aufgabenstellung
print("Aufgabe", aufgabe, "von",
anzahl, ":", a, op, b)
# 9: Schleife mit 3 Versuchen
for versuch in range(1,4):
# 10: Eingabe
try:
print("Bitte eine Zahl eingeben:")
zahl = int(input())
except:
# Falls Umwandlung nicht erfolgreich
print("Sie haben keine Zahl eingegeben")
# Schleife unmittelbar fortsetzen
continue
# 11: Kommentar
if zahl == c:
print(zahl, "ist richtig")
richtig = richtig + 1
break
else:
print(zahl, "ist falsch")
# 12: Richtiges Ergebnis der Aufgabe
print("Ergebnis: ", c)
# 13: Anzahl richtige Ergebnisse
print("Richtig:", richtig, "von", anzahl)
Es wird die folgende Ausgabe erzeugt:
Wie viele Aufgaben (1 bis 10):
2
Aufgabe 1 von 2 : 26 + 18
Bitte eine Zahl eingeben:
44
44 ist richtig
Ergebnis: 44
Aufgabe 2 von 2 : 27 – 2
Bitte eine Zahl eingeben:
24
24 ist falsch
Bitte eine Zahl eingeben:
23
23 ist falsch
Bitte eine Zahl eingeben:
22
22 ist falsch
Ergebnis: 25
Richtig: 1 von 2
3
Nach der Initialisierung des Zufallsgenerators (1) wird die gewünschte Anzahl der Aufgaben eingelesen (2). Da der Benutzer einen Fehler bei der Eingabe machen könnte, findet eine Ausnahmebehandlung statt.
Fehler abfangen
Der Rückgabewert der Funktion input() wird unmittelbar als Parameter
der Funktion int() genutzt. So werden zwei Schritte auf einmal erledigt.
Eingabe,
Umwandlung
Der Zähler für die Anzahl der richtig gelösten Aufgaben (richtig) wird auf 0
gestellt (3). Es wird eine äußere for-Schleife mit der gewünschten Anzahl
gestartet (4).
Der Operator wird per Zufallsgenerator ermittelt (5). Für jeden Operator
gibt es andere Bereiche, aus denen die Zahlen ausgewählt werden (6). Der
Operator selbst und das Ergebnis werden gespeichert.
Zufälliger Operator
Eine Besonderheit ist bei der Division zu beachten (7): Es sollen nur ganze
Zahlen vorkommen. Die beiden zufälligen Operanden (a und b) werden daher aus dem Ergebnis einer Multiplikation ermittelt.
Nur ganze Zahlen
Die Aufgabe wird gestellt (8). Dabei werden zur besseren Orientierung des
Benutzers auch die laufende Nummer und die Gesamtanzahl der Aufgaben
Listing 3.33 Datei spiel_fertig.py
80
81
3
Programmierkurs
ausgegeben. Es wird eine innere for-Schleife für maximal drei Versuche gestartet (9).
Maximal drei
Versuche
82
Die Eingaben des Benutzers (10) werden kommentiert (11). Nach maximal
drei Versuchen wird das richtige Ergebnis ausgegeben (12). Zuletzt wird die
Anzahl der richtig gelösten Aufgaben ausgegeben (13).
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
Eingabe von Berechnungen ....................................................
Addition, Subtraktion und Multiplikation ..........................
23
24
2.1.3
2.1.4
2.1.5
Division, Ganzzahldivision und Modulo .............................
Rangfolge und Klammern ........................................................
Variablen und Zuweisung .......................................................
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
Speichern .......................................................................................
29
2.3.2
2.3.3
2.3.4
2.3.5
2.3.6
Ausführen unter Windows ......................................................
Ausführen unter Ubuntu Linux und unter macOS ..........
Kommentare ................................................................................
Verkettung von Ausgaben .......................................................
Lange Ausgaben ..........................................................................
29
31
32
32
33
5
Inhalt
Inhalt
3
3.1
3.2
3.3
3.4
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
Vergleichsoperatoren ...............................................................
Einfache Verzweigung .............................................................
41
42
3.3.3
3.3.4
3.3.5
3.3.6
3.3.7
3.3.8
Spiel, Version mit Bewertung der Eingabe ........................
Mehrfache Verzweigung .........................................................
Logische Operatoren .................................................................
Mehrere Vergleichsoperatoren .............................................
Spiel, Version mit genauer Bewertung der Eingabe .......
Rangfolge der Operatoren ......................................................
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.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
4.1
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
83
85
86
87
87
89
90
91
94
4.2
Zeichenketten ................................................................................................
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
Ganze Zahlen ...............................................................................
Zahlen mit Nachkommastellen .............................................
Typ ermitteln ................................................................................
Operator ** ....................................................................................
Rundung und Konvertierung ..................................................
Winkelfunktionen ......................................................................
Weitere mathematische Funktionen ...................................
Bitoperatoren ...............................................................................
Brüche .............................................................................................
Eigenschaften ..............................................................................
Operatoren ...................................................................................
Operationen .................................................................................
Funktionen ....................................................................................
Umwandlung einer Zeichenkette in eine Zahl .................
Umwandlung einer Zahl in eine Zeichenkette .................
Datentyp »bytes« .......................................................................
97
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
Referenz und Identität .............................................................
Ressourcen sparen .....................................................................
137
139
4.8.3
Objekte kopieren ........................................................................
140
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.7
5
Weiterführende Programmierung
5.1
Allgemeines ....................................................................................................
143
5.1.1
5.1.2
Kombinierte Zuweisungsoperatoren ..................................
Programmzeile in mehreren Zeilen .....................................
143
145
5.1.3
5.1.4
5.1.5
Eingabe mit Hilfestellung .......................................................
Anweisung »pass« .....................................................................
Funktionen »eval()« und »exec()« ........................................
146
147
149
5.9
Statistikfunktionen .....................................................................................
194
Ausgabe und Formatierung ....................................................................
150
5.10
Eigene Module ...............................................................................................
196
5.2.1
Funktion »print()« ......................................................................
150
5.2.2
5.2.3
5.2.4
Formatierung mit String-Literalen .......................................
Formatierung mit »format()« ................................................
Formatierung wie in C ..............................................................
152
156
158
5.10.1
5.10.2
Eigene Module erzeugen .........................................................
Eigene Module verwenden ......................................................
197
197
Parameter der Kommandozeile .............................................................
199
Conditional Expression ..............................................................................
159
5.11.1
5.11.2
5.11.3
199
199
200
5.2
5.3
8
Dictionarys ......................................................................................................
143
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
Sequenzielles Schreiben ...........................................................
Sequenzielles Lesen ...................................................................
CSV-Datei schreiben ..................................................................
CSV-Datei lesen ...........................................................................
259
261
266
269
7
Verschiedene Module
Dateien mit festgelegter Struktur ........................................................
271
225
7.1
Datum und Zeit .............................................................................................
225
8.4.1
8.4.2
8.4.3
Formatiertes Schreiben ............................................................
Lesen an beliebiger Stelle ........................................................
Schreiben an beliebiger Stelle ................................................
271
272
274
7.1.1
7.1.2
7.1.3
7.1.4
7.1.5
225
227
229
230
232
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
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
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
Morsezeichen aus Datei lesen ................................................
Ausgabe auf dem Bildschirm ..................................................
Ausgabe mit Tonsignalen ........................................................
285
287
288
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
Erstes Programm ........................................................................
Beantworten einer Benutzereingabe ..................................
313
314
9.2.3
9.2.4
Formularelemente mit mehreren Werten ........................
Typen von Formularelementen .............................................
317
320
9.3
Browser aufrufen .........................................................................................
326
9.4
Spiel, Version für das Internet ...............................................................
326
9.4.1
9.4.2
Eingabebeispiel ...........................................................................
Aufbau des Programms ...........................................................
327
328
9.4.3
Code des Programms ................................................................
329
9.2
12
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
Eine erste GUI-Anwendung .....................................................
Ändern von Eigenschaften ......................................................
372
374
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
11.2.10
11.2.11
11.2.12
11.2.13
11.2.14
375
378
380
382
384
386
388
389
391
394
395
397
400
403
11.1
11.2
11.3
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 .................
Radiobuttons zur Auswahl und Ausführung ....................
Checkbuttons zur mehrfachen Auswahl ............................
Schieberegler, Scale ...................................................................
Mausereignisse ...........................................................................
Tastaturereignisse ......................................................................
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
469
470
470
A.2
Installation von XAMPP unter Windows ............................
Installation von XAMPP unter Ubuntu Linux ....................
Installation von XAMPP unter macOS .................................
UNIX-Befehle ..................................................................................................
471
A.2.1
A.2.2
A.2.3
Inhalt eines Verzeichnisses .....................................................
Verzeichnis anlegen, wechseln und löschen .....................
Datei kopieren, verschieben und löschen ..........................
471
472
473
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
A.3
15
Index
Index
– (minus)
Set .............................................................. 129
Subtraktion .............................................. 24
^ (hoch)
Bitoperator ............................................... 94
Set .............................................................. 129
__add__() .................................................... 211
__del__() ...................................................... 207
__eq__() ....................................................... 210
__floordiv__() ........................................... 211
__ge__() ....................................................... 211
__gt__() ........................................................ 210
__init__() ..................................................... 207
__le__() ........................................................ 211
__lt__() ......................................................... 211
__mod__() .................................................. 211
__mul__() ................................................... 211
__ne__() ....................................................... 211
__pow__() ................................................... 211
__repr__() ................................................... 209
__str__() ...................................................... 209
__sub__() .................................................... 211
__truediv__() ............................................. 211
!= (ungleich) .................................................. 42
. (Verzeichnis) ............................................. 471
.. (Verzeichnis) ............................................ 471
[ ] (Dictionary) ............................................ 121
{ } (Dictionary) ............................................ 121
* (Stern)
deque ........................................................ 238
Multiplikation ......................................... 24
Parameter ............................................... 177
Tupel ......................................................... 120
Vervielfachung .............................. 98, 112
** (Potenz) ...................................................... 87
**= (Zuweisung) ......................................... 144
*= (Zuweisung) ........................................... 144
/ (Division) .................................................... 24
/ (Verzeichnis) ............................................ 258
// (Ganzzahldivision) ................................ 25
//= (Zuweisung) ......................................... 144
/= (Zuweisung) ........................................... 144
\ (Verzeichnis) ............................................ 258
& (Bitoperator) ............................................ 93
& (Set) ............................................................ 129
# (Kommentar) ........................................... 32
% (Format) ................................................... 154
% (Prozent)
Modulo ............................................... 25, 87
%= (Zuweisung) ......................................... 144
%d (Format) ................................................ 159
%e (Format) ................................................. 158
%f (Format) ................................................. 158
%o (Format) ................................................ 159
%s (Format) ................................................. 159
%x (Format) ................................................ 159
+ (plus)
Addition ..................................................... 24
deque ........................................................ 238
Verkettung ...................................... 98, 112
+= (Zuweisung) .......................................... 144
< (Format) .................................................... 155
< (kleiner)
Python ........................................................ 42
SQL ............................................................. 347
<< (Bitoperator) ........................................... 94
<= (kleiner gleich)
Python ........................................................ 42
SQL ............................................................. 347
<> (ungleich)
Python ...................................................... 446
SQL ............................................................. 347
=
Python (Zuweisung) ....................... 26, 36
SQL (gleich) ............................................. 347
-= (Zuweisung) ........................................... 144
== (gleich) ................................... 42, 126, 137
> (Format) .................................................... 155
> (größer)
Python ........................................................ 42
SQL ............................................................. 347
>= (größer gleich)
Python ........................................................ 42
SQL ............................................................. 347
>> (Bitoperator) ........................................... 94
| (Bitoperator) ............................................... 93
| (Set) .............................................................. 129
481
Index
Index
~ (Bitoperator) ............................................. 94
$_GET ............................................................ 308
$_POST .......................................................... 311
0b (Präfix) ...................................................... 85
0o (Präfix) ...................................................... 85
0x (Präfix) ..................................................... 85
2to3 ................................................................. 447
A
abs() .................................................................. 97
Abweichung .................................................. 91
add_cascade() ............................................. 428
add_checkbutton() .................................. 428
add_command() ....................................... 427
add_radiobutton() ................................... 428
add_separator() ......................................... 427
add() ............................................................... 128
Alt-Taste (Linux) ....................................... 403
anchor ........................................................... 376
and .................................................................... 46
AND (SQL) .................................................... 347
Annotation ............................................ 72, 83
Antwort-Box (GUI) ................................... 432
Anweisung
ausführen ................................................ 149
leer ............................................................. 147
Anzahl
Elemente ................................................. 100
Teiltexte ................................................... 103
Anzeige (GUI) ............................................. 375
Apache-Webserver ................ 303, 358, 469
append() ............................................. 116, 240
appendleft() ................................................ 240
argv ................................................................ 199
Arithmetischer Mittelwert ................... 196
Array .............................................................. 110
as ........................................................... 177, 197
ASC (SQL) ..................................................... 350
askokcancel() .............................................. 432
Audioausgabe ............................................ 255
Ausdruck
auswerten ............................................... 149
bedingt ..................................................... 159
Ausgabe, lang ............................................... 33
482
Ausnahme ..................................................... 64
Thread ...................................................... 246
Ausnahmebehandlung ............................ 66
Ausrichtung (GUI) .................................... 376
Auswahlmenü
einfach (GUI) ......................................... 386
mehrfach (GUI) ..................................... 388
Auswahlmenü (HTML) ........................... 321
B
b (Format) .................................................... 155
b (Präfix) ...................................................... 109
Bedingter Ausdruck ................................ 159
Bedingung ..................................... 41, 61, 132
verknüpfen ............................................... 46
Beep() .................................................. 256, 290
Benannter Parameter ............................. 178
Benutzeroberfläche ................................. 371
Betrag .............................................................. 97
bg .................................................................... 376
Bild einbinden (GUI) ............................... 376
Bild-Widget ................................................. 378
bin() ........................................................... 85, 93
bind() ................................................... 403, 404
Bit ..................................................................... 91
schieben ..................................................... 94
setzen ......................................................... 93
Bitoperator .................................................... 92
Bogenmaß ..................................................... 89
bool ................................................................ 132
borderwidth ............................................... 376
break ................................................................ 52
Breakpoint .................................................. 173
Breite (GUI) ................................................. 376
Browser ........................................................ 305
aufrufen ................................................... 326
Bruch ............................................................... 94
Button ........................................................... 373
Button-Widget ........................................... 373
Byte .................................................................. 91
Byte-Literal ....................................... 108, 306
bytes .............................................................. 108
decode() ................................................... 109
bytes() ........................................................... 108
C
Callback (GUI) ............................................. 373
cd ..................................................................... 472
cgi
FieldStorage ........................................... 316
Modul ............................................. 312, 316
cgi-bin ........................................................... 312
CGI-Skript .................................................... 312
Standardverzeichnis ........................... 315
cgitb
enable() .................................................... 316
Modul ....................................................... 316
char (Event-Objekt) .................................. 405
checkbox (HTML) ..................................... 323
Checkbutton-Widget ............................... 395
checked (HTML) ........................................ 323
chr() ................................................................ 192
class ................................................................ 204
cleanup()
RPi.GPIO .................................................. 461
clear()
deque ........................................................ 238
Set .............................................................. 128
close()
connection .................................... 343, 360
cursor ........................................................ 360
Datei ......................................................... 259
scandir() ................................................... 282
collections
deque() ..................................................... 238
Modul ....................................................... 236
command
Widget ................................... 373, 394, 397
commit()
connection .................................... 343, 360
Compiler ........................................................ 18
Conditional Expression ......................... 159
configure() ................................................... 375
connect()
mysql ........................................................ 359
sqlite3 ....................................................... 342
connection
close() .............................................. 343, 360
commit() ........................................ 343, 360
cursor() ........................................... 342, 360
mysql ........................................................ 360
sqlite3 ....................................................... 342
connector
connect() ................................................. 359
mysql ........................................................ 359
Connector / Python ................................. 358
Content-type .............................................. 313
continue ......................................................... 68
copy
deepcopy() .................................... 140, 212
Modul ............................................. 140, 212
copy()
Datei ......................................................... 285
deque ........................................................ 238
Set .............................................................. 128
cos() .................................................................. 89
count()
Liste ........................................................... 116
str ............................................................... 103
cp ..................................................................... 473
CREATE TABLE (SQL) ............................... 342
CSV-Datei ..................................................... 266
curselection() ............................................. 389
cursor
close() ....................................................... 360
execute() .................................................. 360
fetchall() .................................................. 364
cursor() ......................................................... 342
connection .............................................. 360
D
d (Format) .................................................... 155
DATE (SQL) .................................................. 358
Datei
anlegen .................................................... 473
Eigenschaften ........................................ 282
Ende erkennen ...................................... 264
Existenz prüfen ..................................... 285
feste Struktur ......................................... 271
formatierte Ausgabe .......................... 271
Größe ........................................................ 283
Inhalt anhängen .................................. 261
kopieren ......................................... 285, 473
lesen .......................................................... 261
lesen und schreiben ............................ 274
Liste erstellen ......................................... 280
löschen ........................................... 285, 473
öffnen ....................................................... 258
483
Index
Index
Datei (Forts.)
Position ändern .......................... 259, 272
schließen ................................................. 259
schreiben ................................................. 259
speichern ................................................. 257
Typ ............................................................. 257
umbenennen ............................... 285, 473
verschieben .................................. 285, 473
verwalten ................................................ 284
Zugriffszeitpunkt ................................. 283
Dateiendung
.csv ............................................................. 266
.py ................................................................ 29
Dateizugriff
binär ......................................................... 257
sequenziell .............................................. 257
wahlfrei .................................................... 257
Datenbank ................................................... 339
Aktionsabfrage ..................................... 343
Auswahlabfrage ................................... 344
Datensatz ............................................... 339
Datensatz ändern ................................ 352
Datensatz anzeigen ............................ 343
Datensatz einfügen ............................ 343
Datensatz filtern .................................. 344
Datensatz löschen ............................... 354
Datensatz sortieren ............................ 349
Datensatzanzahl begrenzen ........... 365
Datensatz-Cursor ................................ 342
eindeutiger Index ................................ 343
Ergebnis der Abfrage .......................... 344
erzeugen ........................................ 342, 359
Feld ............................................................ 339
Internet .................................................... 355
Managementsystem ................ 340, 357
Primärschlüssel .................................... 342
Server ........................................................ 358
Tabelle ...................................................... 339
Tabelle erzeugen ........................ 342, 360
Verbindung herstellen ....................... 342
verwalten ................................................ 358
Datentyp
bool ........................................................... 132
DATE (SQL) ............................................. 358
Datenbank .............................................. 339
deque ........................................................ 236
DOUBLE (SQL) ....................................... 358
ermitteln ................................................... 86
484
Datentyp (Forts.)
float ............................................................. 85
int ................................................................. 83
INT (SQL) ................................................. 358
INTEGER (SQL) ...................................... 340
long ........................................................... 445
NoneType ................................................ 135
REAL (SQL) .............................................. 340
speziell ..................................................... 236
str ................................................................. 97
TEXT (SQL) .............................................. 340
VARCHAR (SQL) .................................... 358
Datum und Zeit ......................................... 225
Differenz .................................................. 230
erzeugen .................................................. 229
formatieren .................................. 225, 227
Nullpunkt ................................................ 225
Debian .......................................................... 449
Debugger ..................................................... 169
decode()
bytes .......................................................... 109
deepcopy() ......................................... 140, 212
def ..................................................................... 73
Klassenmethode .................................. 204
degrees() ......................................................... 90
del
Destruktor .............................................. 207
Dictionary .............................................. 123
Liste ........................................................... 113
Referenz ................................................... 139
DELETE (SQL) .............................................. 354
denominator ................................................ 95
deque ............................................................. 236
deque() .......................................................... 238
DESC (SQL) ................................................... 350
Deserialisierung ........................................ 276
destroy() ....................................................... 373
Destruktor ................................................... 206
Dezimalformat .......................................... 155
Dezimalzahl .................................................. 84
Dezimalzeichen .......................................... 24
ändern ...................................................... 301
Dialogfeld
erzeugen .................................................. 436
modal ....................................................... 439
Dictionary ................................................... 120
Element löschen ................................... 123
Elementexistenz ................................... 123
Dictionary (Forts.)
erzeugen .................................................. 121
Funktionen ............................................. 122
KeyError ................................................... 288
leer ............................................................. 132
Reihenfolge ............................................ 121
vergleichen ............................................. 125
View .......................................................... 123
DirEntry ........................................................ 282
discard() ........................................................ 128
DOUBLE (SQL) ............................................ 358
double-ended queue ............................... 237
DoubleVar ................................................... 393
Dualformat ................................................. 155
Dualzahl .................................................. 84, 93
dump() .......................................................... 276
E
e (Event-Objekt) ........................................ 403
e (Exponential) ............................................ 86
e (Format) .................................................... 154
e hoch x .......................................................... 91
Eigenschaft .................................................. 204
Eingabe
kommentiert .......................................... 146
nicht sinnvoll ......................................... 175
versteckt (GUI) ...................................... 380
versteckt (HMTL) .................................. 321
wiederholen ............................................. 67
Zeichenkette ...................................... 37, 98
Eingabefeld
einzeilig (GUI) ........................................ 378
HTML ........................................................ 321
mehrzeilig (GUI) ................................... 382
scrollbar (GUI) ....................................... 384
Eingebaute Funktion .............................. 189
Einplatinencomputer ............................. 449
Einrücken ...................................................... 61
doppelt ....................................................... 53
Einzelschrittverfahren ........................... 170
Elektronische Schaltung ........................ 449
elif ..................................................................... 45
else .................................................................... 43
Elternelement (GUI) ................................ 406
enable() ......................................................... 316
end .................................................................. 151
Endlosschleife ............................................ 371
endswith() ................................................... 105
Entry-Widget .............................................. 378
Entwicklung .................................................. 63
Entwicklungsumgebung ......................... 21
enum ............................................................. 219
Enumeration .............................................. 219
Eulersche Zahl .............................................. 91
eval() .............................................................. 149
Event-Objekt .............................................. 403
except .............................................................. 66
exec() ............................................................. 149
execute() ...................................................... 342
cursor ....................................................... 360
exists()
os.path ..................................................... 285
exit, Kommandozeile ............................... 31
exit() .............................................................. 260
Exklusives Oder, bitweise ....................... 94
exp() ................................................................. 91
Exponentialformat .................................. 154
extend() ........................................................ 240
extendleft() ................................................. 240
F
f (Format) ..................................................... 154
f (String-Literal) ......................................... 153
factorial() ....................................................... 91
Fakultät ........................................................... 91
False ............................................................... 132
Fehler ..................................................... 64, 167
abfangen ................................................... 65
erzeugen .................................................. 174
Laufzeitfehler ........................................ 169
logisch ...................................................... 169
Nachricht (GUI) .................................... 432
Syntaxfehler .......................................... 167
Unterscheidung .................................... 175
Fenster
öffnen ....................................................... 373
schließen ................................................. 373
fetchall()
cursor ....................................................... 364
fg ..................................................................... 376
FieldStorage ................................................ 316
value ......................................................... 316
485
Index
Index
filter() ............................................................. 164
find() .............................................................. 104
findall() ......................................................... 248
Fließkommazahl ......................................... 85
float (Datentyp) ........................................... 85
float() ...................................................... 37, 106
font ................................................................. 376
for
Dictionary ............................................... 124
Liste ........................................................... 112
Schleife ....................................................... 51
Set .............................................................. 127
Tupel ......................................................... 117
Zeichenkette .......................................... 102
form (HTML) ............................................... 308
format() .............................................. 152, 156
Formatierung
format() ................................................... 156
String-Literal ......................................... 152
wie in C ..................................................... 158
Fraction() ....................................................... 95
fractions
Fraction() .................................................. 95
Modul ......................................................... 94
Frame-Widget ............................................ 406
from ............................................................... 198
Frozenset ..................................................... 130
frozenset() ................................................... 131
Führende Null ............................................ 156
Funktion ........................................................ 71
als Parameter ........................................ 188
Aufruf ......................................................... 73
beenden ..................................................... 76
benannter Parameter ........................ 178
Definition .................................................. 73
eingebaut ................................................ 189
Lambda .................................................... 187
mehrere Rückgabewerte ................... 181
mehrfacher Aufruf .............................. 161
Name .......................................................... 73
Parameter voreinstellen ................... 179
Parameter, ein ........................................ 73
Parameter, mehrere .............................. 75
Parameterübergabe ........................... 182
rekursiv .................................................... 186
Rückgabewert ......................................... 75
statistisch ................................................ 194
trigonometrisch ..................................... 89
486
Funktion (Forts.)
variable Parameteranzahl ............... 177
Funktionale Programmierung ............ 160
HTML (Forts.)
Formulardaten ..................................... 316
Formularelement ................................. 317
G
I
Ganze Zahl ..................................................... 83
Divisionsrest ............................................ 25
prüfen ......................................................... 87
gcd() ................................................................. 91
Geometriemanager (GUI) ........... 373, 405
get_ident(), threading ............................ 243
get() ............................................. 380, 387, 393
GET-Methode ............................................. 308
GGT .................................................................. 91
Gimp-Toolkit .............................................. 371
Gleich
in Python .................................................. 42
in SQL ....................................................... 347
glob() ............................................................. 280
global ............................................................. 185
Globaler Namensraum .......................... 185
Graphical User Interface ........................ 371
grid() .............................................................. 412
Groß- und Kleinschreibung ................... 27
Größter gemeinsamer Teiler ................. 91
GTK+ .............................................................. 371
GUI ................................................................. 371
GUI-Anwendung starten ....................... 373
Identität ....................................................... 138
IDLE
benutzen ................................................... 23
Debugger ................................................. 169
installieren (Linux) ................................ 21
if ......................................................................... 42
image ............................................................. 376
import .................................................... 41, 197
in
Dictionary ............................................... 123
Element-View ........................................ 125
for ................................................................. 52
Key-View ................................................. 125
Liste ........................................................... 112
Sequenz ...................................................... 98
Set .............................................................. 127
Werte-View ............................................. 124
Index
deque ........................................................ 238
Sequenz .................................................... 100
index() ................................................. 116, 240
Info-Nachricht (GUI) ............................... 432
input (HTML) .............................................. 308
input() ........................................................... 146
INSERT INTO (SQL) ................................... 343
insert()
deque ........................................................ 240
Listbox ...................................................... 387
Liste ........................................................... 115
Textbox .................................................... 384
Instanz .......................................................... 205
int (Datentyp) .............................................. 83
INT (SQL) ...................................................... 358
int() ................................................... 37, 87, 106
INTEGER (SQL) ........................................... 340
IntEnum ....................................................... 219
Internet ........................................................ 303
Daten lesen ............................................. 304
Daten senden .............................. 307, 310
Datenbank .............................................. 355
Interpreter ..................................................... 18
H
Haltepunkt .................................................. 173
harmonic_mean() .................................... 196
Harmonischer Mittelwert ..................... 196
has_key() ...................................................... 447
Header .......................................................... 313
height ............................................................ 376
hex() ................................................................. 84
Hexadezimalformat ................................ 155
Hexadezimalzahl ....................................... 84
Hintergrundfarbe (GUI) ......................... 376
Höhe (GUI) .................................................. 376
HTML
Datei kopieren ...................................... 306
Formular ................................................. 315
IntVar ............................................................ 393
Inversion, bitweise .................................... 94
is ............................................................ 137, 213
isclose() ........................................................... 91
ISO 8601 ....................................................... 227
items() ........................................................... 125
Iterable .......................................................... 160
filtern ........................................................ 164
verbinden ................................................ 161
Iterator .......................................................... 160
schließen ................................................. 282
Iterierbares Objekt ................................... 160
J
Ja-Nein-Box (GUI) ..................................... 432
K
Kalenderwoche ......................................... 227
keycode (Event-Objekt) .......................... 405
KeyError, Dictionary ............................... 288
keys() ............................................................. 124
keysym (Event-Objekt) ........................... 405
Klasse ............................................................ 203
abgeleitet ................................................ 214
Basisklasse .............................................. 214
Definition ................................................ 204
Kodierung ................................................... 304
Kommandozeile ...................... 30, 199, 471
Kommentar .................................................. 32
Konstante ...................................................... 91
Aufzählung ............................................ 219
Konstruktor ................................................ 206
Vererbung ............................................... 216
Kontrollkästchen
HTML ........................................................ 321
Kontrollstruktur, geschachtelt ............. 53
Konvertierung ........................................... 447
Kopfrechnen ................................................ 35
L
Label-Widget .............................................. 375
Lambda-Funktion ................. 187, 412, 414
Lange Ausgabe ............................................. 33
487
Index
Index
Laufzeitfehler ............................................. 169
Layoutmanager (GUI) ............................. 405
len() ................................................................ 100
LibreOffice Calc ............................... 268, 297
LIKE (SQL) .................................................... 347
LIMIT (SQL) .................................................. 365
limit_denominator() ................................. 96
Linksbündig ................................................ 155
Linux ........................................................ 18, 21
Terminal .................................................. 199
List Comprehension ................................ 164
Listbox-Widget ................................ 386, 388
Liste ................................................................ 109
Anzahl bestimmter Elemente ......... 116
eingebettete ........................................... 111
Element anfügen .................................. 116
Element einfügen ................................. 115
Element löschen ......................... 113, 115
filtern ........................................................ 164
leer ............................................................. 132
Operation ................................................ 112
Position ermitteln ............................... 116
sortieren .................................................. 115
umdrehen ............................................... 115
load() .............................................................. 278
localtime() ................................................... 225
log() .................................................................. 91
log10() .............................................................. 91
Logarithmus ................................................. 91
Logischer Fehler ........................................ 169
Logischer Operator .................................... 46
Lokaler Namensraum ............................. 185
Lokaler Webserver ................................... 303
long ................................................................ 445
Lösungen .............................................. 20, 474
ls -l .................................................................. 471
M
macOS ............................................................. 18
mainloop() .................................................. 373
map() ............................................................. 161
MariaDB ............................................. 357, 469
math
cos() ............................................................. 89
degrees() .................................................... 90
e .................................................................... 91
488
math (Forts.)
exp() ............................................................ 91
factorial() .................................................. 91
gcd() ............................................................ 91
isclose() ...................................................... 91
log() ............................................................. 91
log10() ........................................................ 91
Modul ......................................................... 83
pi .................................................................. 91
radians() .................................................... 90
sin() .............................................................. 89
sqrt() ............................................................ 91
tan() ............................................................. 89
Mausereignis (GUI) .................................. 400
Mausposition
absolut ..................................................... 431
relativ ....................................................... 403
max() ............................................................. 191
mean() ........................................................... 196
median_high() ........................................... 196
median_low() ............................................. 196
median() ....................................................... 196
Menge ........................................................... 126
Differenzmenge .................................... 130
Element hinzufügen ........................... 128
Element löschen ................................... 128
kopieren .................................................. 128
leer ............................................................. 132
leeren ........................................................ 128
Schnittmenge ........................................ 130
Teilmenge ............................................... 128
Vereinigungsmenge ........................... 130
Menu
tkinter ....................................................... 424
Menü (GUI) ................................................. 424
abtrennen ............................................... 428
Menüleiste (GUI) ...................................... 424
messagebox ................................................ 431
Methode ....................................................... 204
besondere ............................................... 208
min() .............................................................. 191
Mittelwert ................................................... 196
mkdir ............................................................. 472
mktime() ...................................................... 229
Modul
cgi .................................................... 312, 316
cgitb .......................................................... 316
collections .............................................. 236
Modul (Forts.)
copy ................................................. 140, 212
eigenes ..................................................... 197
einbinden ......................................... 41, 197
enum ......................................................... 219
erzeugen .................................................. 197
fractions .................................................... 94
glob ............................................................ 280
importieren als ..................................... 197
math ........................................................... 83
mysql.connector ................................... 359
os ...................................................... 282, 284
os.path ..................................................... 285
pickle ......................................................... 276
random ...................................................... 41
re ................................................................. 248
shutil ......................................................... 284
sqlite3 ....................................................... 340
statistics .................................................. 194
sys .................................................... 199, 260
threading ................................................ 241
time ........................................................... 225
tkinter ....................................................... 371
tkinter.messagebox ............................ 431
tkinter.scrolledtext .............................. 385
umbenennen ......................................... 197
urllib .......................................................... 303
urllib.parse ............................................. 303
urllib.request ......................................... 303
webbrowser ............................................ 326
winsound ................................................ 255
Modularisierung ................................ 71, 197
Morsezeichen ............................................. 285
move() ........................................................... 285
MS Excel ............................................. 268, 297
multiple (HTML) ....................................... 323
Multithreading .......................................... 241
mv ................................................................... 473
MySQL ................................................. 357, 469
mysql
connector ................................................ 359
N
Nachkommastellen ................................... 27
Anzahl ...................................................... 154
Nachrichtenbox (GUI) ............................ 431
name
DirEntry ................................................... 282
Namensraum ............................................. 185
Nenner eines Bruchs ................................. 95
nicht
logisch (Python) ..................................... 46
logisch (SQL) .......................................... 347
None .............................................................. 135
NoneType .................................................... 135
NOOBS .......................................................... 451
not .................................................................... 46
NOT (SQL) .................................................... 347
numerator ..................................................... 95
O
o (Format) .................................................... 155
Objekt ..................................................... 83, 204
aus Datei lesen ...................................... 278
ausgeben ................................................. 209
erzeugen .................................................. 205
Identität .................................................. 213
in Datei schreiben ................................ 276
Informationen ...................................... 209
iterierbar ................................................. 160
kopieren ......................................... 140, 211
Referenz ......................................... 137, 211
Typ ermitteln ........................................... 86
vergleichen ............................................. 210
Objektorientierte Programmierung 203
oct() .................................................................. 84
oder
bitweise ...................................................... 93
logisch (Python) ..................................... 46
logisch (SQL) .......................................... 347
offvalue ........................................................ 397
OK-Abbrechen-Box (GUI) ...................... 432
Oktalformat ................................................ 155
Oktalzahl ........................................................ 84
onvalue ......................................................... 397
OOP ................................................................ 203
open()
Datei ......................................................... 258
webbrowser ............................................ 326
Operator
Bit- ............................................................... 92
für Sequenzen .......................................... 98
489
Index
Index
Operator (Forts.)
logischer .................................................... 46
Rangfolge ........................................... 25, 50
Rechenoperator ...................................... 87
Vergleichsoperator ............................... 41
Vergleichsoperator, mehrere ............ 48
Verkettung ............................................... 99
Vervielfachung ....................................... 99
Operatormethode .................................... 209
Optionsfeld (GUI) ..................................... 391
or ....................................................................... 46
OR (SQL) ....................................................... 347
ord() ............................................................... 192
ORDER BY (SQL) ........................................ 349
os
Modul ............................................. 282, 284
remove() .................................................. 285
stat() .......................................................... 282
os.path .......................................................... 285
exists() ...................................................... 285
output()
RPi.GPIO .................................................. 461
P
pack() ................................................... 373, 406
Parallele Programme .............................. 241
Parameter ............................................... 73, 75
benannt ................................................... 178
variable Anzahl .................................... 177
voreinstellen .......................................... 179
Parameter-Substitution ......................... 351
partition() .................................................... 105
pass ................................................................ 147
password (HTML) ..................................... 323
Passworteingabe
GUI ............................................................ 380
HTML ........................................................ 321
PhotoImage ................................................ 378
PHP .............................................. 303, 307, 469
phpMyAdmin .................................. 358, 469
Pi ....................................................................... 91
pickle ............................................................. 276
dump() ...................................................... 276
load() ......................................................... 278
PIXEL ............................................................. 452
place() .................................................. 414, 416
490
PlaySound() ................................................ 256
pop() .............................................................. 240
popleft() ........................................................ 240
Position Teiltext ....................................... 104
POST-Methode .......................................... 311
PRIMARY KEY (SQL) ................................. 342
print() ..................................................... 28, 150
mehrere Ausgaben ................................ 32
Programm
abbrechen ............................................... 260
Abbruch vermeiden .............................. 65
anhalten .................................................. 232
ausführen, IDLE ...................................... 29
ausführen, Kommandozeile .............. 30
eingeben .................................................... 28
Entwicklung ............................................. 63
konvertieren .......................................... 447
Parameter ............................................... 199
Programmzeile, lang ............................... 145
Prozentformat ........................................... 154
pyGTK ........................................................... 371
PyQt ............................................................... 371
Python
als Taschenrechner ............................... 23
auf dem Webserver ............................. 313
installieren ............................................... 20
Interpreter ....................................... 30, 313
MySQL-Schnittstelle ........................... 358
Shell ............................................................. 23
starten ........................................................ 23
Version ....................................................... 32
Python 2 ................................................ 19, 445
Python 3 ................................................ 19, 445
python.exe .................................................. 313
python.org ............................................. 20, 21
Python-Interpreter .................................. 449
Q
QT ................................................................... 371
R
radians() ......................................................... 90
radio (HTML) .............................................. 323
Radiobutton
GUI ............................................................. 391
HTML ........................................................ 321
raise ................................................................ 174
Randart (GUI) ............................................. 376
Randbreite (GUI) ....................................... 376
randint() ......................................................... 41
random
Modul ......................................................... 41
randint() .................................................... 41
seed() ........................................................... 41
range() ............................................................. 55
Rapid Application Development ......... 17
Raspberry Pi ................................................ 449
Einzelteile ................................................ 449
GND ........................................................... 458
GPIO ................................................ 454, 457
IDLE ........................................................... 452
Installation ............................................. 451
Leuchtdiode ........................................... 459
Leuchtdiode schalten ......................... 460
Lüfter steuern ........................................ 463
Python-Modul ....................................... 458
Schäden ................................................... 450
Schaltung ................................................ 453
Sicherheit ................................................ 450
Spannung ................................................ 458
SQLite3 ........................................... 453, 465
Steckbrett ................................................ 455
Stromkreis .............................................. 453
Temperatur ermitteln ........................ 459
Transistor ................................................ 463
Widerstand ............................................. 455
Zusammenbau ...................................... 451
Raspbian ............................................. 449, 451
Start .......................................................... 452
raw_input() ................................................. 445
re
findall() .................................................... 248
Modul ....................................................... 248
sub() ........................................................... 252
read() .............................................................. 265
readline() ...................................................... 263
readlines() .................................................... 261
REAL (SQL) ................................................... 340
Rechte
Unix ........................................................... 472
Rechtsbündig ............................................. 155
Referenz
GUI-Widget ............................................ 375
löschen ..................................................... 139
Objekt ............................................. 137, 211
übergeben ............................................... 182
Regulärer Ausdruck ................................. 247
Rekursion ........................................... 186, 281
relief ............................................................... 376
remove() ....................................................... 115
os ................................................................ 285
replace() ........................................................ 104
repr() .................................................... 209, 220
Reservierte Wörter ..................................... 27
return .............................................................. 76
mehrere Werte ...................................... 181
reverse() ....................................................... 115
reversed() ..................................................... 193
rfind() ............................................................ 104
rm ................................................................... 473
rmdir ............................................................. 472
rotate() .......................................................... 241
round() ............................................................ 87
rpartition() .................................................. 105
Rückgabewert .............................................. 75
mehrere ................................................... 181
Runden ........................................................... 87
RuntimeError ............................................. 176
rwx ................................................................. 472
S
Scale-Widget ............................................... 397
scandir() ....................................................... 281
Schaltfläche (GUI) ..................................... 373
Schaltung
elektronisch ........................................... 449
Schieberegler (GUI) .................................. 397
Schleife ........................................................... 51
Abbruch ..................................................... 52
direkt fortfahren .................................... 68
endlos ....................................................... 132
for ................................................................. 51
while ........................................................... 60
Schlüssel-Wert-Kombination .............. 120
Schrift (GUI) ................................................ 376
Scrollbar-Widget ....................................... 389
491
Index
Index
ScrolledText() ............................................. 385
ScrolledText-Widget ............................... 384
Scrollen (GUI) ............................................. 384
secrets ............................................................. 41
seed() ............................................................... 41
seek() .................................................... 259, 272
select (HTML) ............................................. 323
SELECT (SQL) ............................................... 344
selected (HTML) ........................................ 323
Senden (HTML) .......................................... 321
sep .................................................................. 151
Separator ..................................................... 151
Sequenz .......................................................... 97
Index ......................................................... 100
Operatoren ............................................... 98
sortieren .................................................. 193
Teilbereich .............................................. 100
umdrehen ............................................... 193
Serialisierung ............................................. 276
Set ................................................................... 126
Reihenfolge ............................................ 126
unveränderlich ..................................... 130
set() ................................................................. 127
GUI .................................................. 391, 393
setmode()
RPi.GPIO .................................................. 461
setup()
RPi.GPIO .................................................. 461
setwarnings()
RPi.GPIO .................................................. 461
show .............................................................. 380
show() ............................................................ 432
showerror() ................................................. 432
showinfo() ................................................... 432
showwarning() ........................................... 432
shutil
copy() ........................................................ 285
Modul ....................................................... 284
shutil.move() .............................................. 285
Sicherheit ...................................................... 41
sin() .................................................................. 89
sleep() ............................................................ 232
time ........................................................... 461
Slice ................................................................ 100
sort() .............................................................. 115
sorted() ......................................................... 193
Spiel Kopfrechnen ..................................... 35
split() .............................................................. 105
492
SQL ................................................................. 339
SQL-Befehl senden ................................... 342
SQL-Injection ............................................. 351
sqlite3
connect() ................................................. 342
connection ............................................. 342
cursor ....................................................... 342
Modul ....................................................... 340
sqrt() ................................................................ 91
start()
Thread ...................................................... 242
startswith() .................................................. 105
stat() ............................................................... 282
statistics ....................................................... 194
Statistik ........................................................ 194
str
count() ...................................................... 103
Datentyp ................................................... 97
endswith() ............................................... 105
find() ......................................................... 104
partition() ............................................... 105
replace() ................................................... 104
rfind() ........................................................ 104
rpartition() ............................................. 105
split() ......................................................... 105
startswith() ............................................. 105
str() ................................................................. 108
strftime() ...................................................... 227
String ............................................................... 97
leer ............................................................. 132
String-Literal .............................................. 152
StringVar ...................................................... 393
sub() ............................................................... 252
Suchen und Ersetzen .............................. 247
sum() ............................................................. 191
Syntaxfehler ............................................... 167
sys ......................................................... 199, 260
Systemton ......................................... 255, 436
T
tan() .................................................................. 89
target
Thread ...................................................... 242
Tastaturereignis (GUI) ............................ 400
Taste F5 .................................................. 29, 171
Teilbereich einer Sequenz .................... 100
Teilmenge .................................................... 128
Teiltext ersetzen ....................................... 104
Terminal ................................................ 31, 471
TEXT (SQL) ................................................... 340
text/html ..................................................... 313
textarea (HTML) ........................................ 323
Text-Widget ................................................ 382
Thread
Ausnahme .............................................. 246
globale Daten ........................................ 244
Identifikation ........................................ 243
Klasse ........................................................ 242
threading
Modul ....................................................... 241
time ................................................................ 225
localtime() .............................................. 225
mktime() .................................................. 229
sleep() ............................................. 232, 461
strftime() ................................................. 227
time() ........................................................ 225
time() ............................................................. 225
Tk .................................................................... 371
mainloop() .............................................. 373
tkinter ....................................................... 373
tkinter ........................................................... 371
Button ...................................................... 373
Menu ......................................................... 424
messagebox ........................................... 431
PhotoImage ........................................... 378
Scrollbar .................................................. 390
Tk ................................................................ 373
tkinter.messagebox
askokcancel() ......................................... 432
askretrycancel() .................................... 432
askyesno() ............................................... 432
Modul ....................................................... 431
show() ....................................................... 432
showerror() ............................................. 432
showinfo() ............................................... 432
showwarning() ...................................... 432
tkinter.scrolledtext
ScrolledText() ......................................... 385
Toleranz .......................................................... 91
Tonsignal ..................................................... 289
Toplevel-Widget ........................................ 436
True ................................................................ 132
try ..................................................................... 66
Tupel
entpacken ............................................... 120
leer ............................................................. 132
mehrdimensional ................................ 117
verpacken ............................................... 120
type() ............................................................... 86
Typhinweis ............................................ 71, 83
U
Überladen ............................................. 71, 208
Überschreiben ........................................... 215
Übungsaufgaben ........................................ 20
Ubuntu Linux ....................................... 18, 21
Umrechnung
in dual ........................................................ 85
in hexadezimal ....................................... 84
in oktal ....................................................... 84
Umwandlung
in ganze Zahl ........................................... 87
in Zahl ............................................... 37, 106
in Zeichenkette ..................................... 108
und
bitweise ...................................................... 93
logisch (Python) ..................................... 46
logisch (SQL) .......................................... 347
Ungleich
Python ........................................................ 42
SQL ............................................................. 347
Unicode ........................................................ 192
Literal ....................................................... 446
UNIX
Befehle ...................................................... 471
UPDATE (SQL) ............................................ 352
update() ........................................................ 123
urlencode() .................................................. 312
urllib
Modul ....................................................... 303
urllib.parse
Modul ....................................................... 303
urlencode() ............................................. 312
urllib.request
Modul ....................................................... 303
urlopen() .................................................. 306
urlretrieve() ............................................ 306
urlopen() ...................................................... 306
493
Index
Index
urlretrieve() ................................................. 306
UTF-8 ............................................................. 304
V
value
FieldStorage ........................................... 316
ValueError ..................................................... 65
values()
Dictionary ..................................... 124, 196
VARCHAR (SQL) ......................................... 358
Variable ................................................... 26, 36
kontrollieren .......................................... 172
Name .......................................................... 27
Vererbung ................................................... 213
mehrfach ................................................. 217
Vergleichsoperator .................................... 41
Verschlüsselung .......................................... 41
Verzeichnis
aktuell ...................................................... 471
anlegen .................................................... 472
Inhalt ........................................................ 471
löschen ..................................................... 472
übergeordnet ......................................... 471
verwalten ................................................ 284
wechseln .................................................. 472
Verzweigung ................................................ 41
einfache ..................................................... 42
mehrfache ................................................ 44
View ............................................................... 123
Vordergrundfarbe (GUI) ........................ 376
Vorzeichen .................................................... 50
W
Wahrheitswert ........................................... 132
Warnung (GUI) .......................................... 432
WAV-Datei ................................................... 255
Webbrowser ................................................ 305
webbrowser
Modul ....................................................... 326
open() ....................................................... 326
Webserver ................................................... 303
Programmierung ................................. 312
WHERE (SQL) .............................................. 344
while ................................................................ 60
494
Widget ........................................................... 371
add_cascade() ....................................... 428
add_checkbutton() .............................. 428
add_command() .................................. 427
add_radiobutton() .............................. 428
add_separator() ................................... 427
anchor ...................................................... 376
anordnen ................................................ 405
bewegen ........................................ 418, 419
bg ............................................................... 376
bind() .............................................. 403, 404
borderwidth ........................................... 376
command ............................ 373, 394, 397
configure() .............................................. 375
destroy() .................................................. 373
DoubleVar .............................................. 393
Eigenschaft ändern ............................. 374
Ereignis .................................................... 403
fg ................................................................ 376
font ............................................................ 376
get() ........................................ 380, 387, 393
grid() ......................................................... 412
height ....................................................... 376
image ....................................................... 376
insert() ............................................ 384, 387
IntVar ....................................................... 393
offvalue ................................................... 397
onvalue .................................................... 397
pack() .............................................. 373, 406
place() ............................................. 414, 416
relief .......................................................... 376
scrollbar .................................................. 389
set() .................................................. 391, 393
show .......................................................... 380
StringVar ................................................. 393
Toplevel ................................................... 436
Variable ................................................... 391
width ......................................................... 376
yview() ...................................................... 391
width ............................................................. 376
Wiederholen-Abbrechen-Box (GUI) 432
Wiederholung .............................................. 51
Windows ........................................................ 18
Windows 10 .................................................. 20
winsound ..................................................... 255
Beep() .............................................. 256, 290
PlaySound() ............................................ 256
Wochentagsnummer .............................. 227
write() ............................................................ 260
writelines() .................................................. 260
Wurzel ............................................................. 91
wxPython .................................................... 371
wxWidgets ................................................... 371
X
x (Event-Objekt) ........................................ 403
x (Format) .................................................... 155
x_root (Koordinate) ................................ 431
XAMPP ................................................ 303, 469
Y
y (Event-Objekt) ........................................ 403
y_root (Koordinate) ................................. 431
yview() ........................................................... 391
Z
Zahl (Forts.)
mit Nachkommastellen ...................... 85
Zähler eines Bruchs ................................... 95
Zeichenkette ................................................. 97
beginnt mit ............................................ 105
Eingabe ...................................................... 98
endet mit ................................................. 105
mehrzeilig ................................................. 98
partitionieren ........................................ 105
zerlegen ................................................... 105
Zeilenende ................................................... 151
Zeichen ..................................................... 274
Zeilenumbruch in Code ......................... 145
Zentralwert ................................................. 196
zip() ................................................................ 161
Zufallszahl
Generator .................................................. 40
Generator initialisieren ....................... 41
liefern ......................................................... 41
Zuweisung .............................................. 26, 36
kombinierte Operatoren ................... 143
mehrfach ................................................. 118
Zahl ................................................................... 83
als Bruch annähern ............................... 96
ganze .......................................................... 83
495
Wissen, wie’s geht.
Thomas Theis ist Diplom-Ingenieur für Technische
Informatik und hat langjährige Erfahrung als ITDozent, unter anderem an der Fachhochschule Aachen. Er leitet Schulungen zu C/C++, Visual Basic
und Webprogrammierung und ist Autor zahlreicher
erfolgreicher Fachbücher. Einsteiger und Neulinge
schätzen seine Fähigkeit, auch komplizierte Sachverhalte leicht verständlich zu machen und dabei
auch den Spaß am Programmieren nie aus den
Augen zu verlieren.
Thomas Theis
Einstieg in Python
Ideal für Programmiereinsteiger
495 Seiten, broschiert, 5. Auflage, Juni 2017
24,90 Euro, ISBN 978-3-8362-4525-8
www.rheinwerk-verlag.de/4374
Wir hoffen sehr, dass Ihnen diese Leseprobe gefallen hat. Gerne dürfen Sie diese Leseprobe empfehlen und weitergeben, allerdings nur
vollständig mit allen Seiten. Die vorliegende Leseprobe ist in all ihren
Teilen urheberrechtlich geschützt. Alle Nutzungs- und Verwertungsrechte liegen beim Autor und beim Verlag.
Teilen Sie Ihre Leseerfahrung mit uns!
Herunterladen