Python One-Liners. Christian Mayer
Чтение книги онлайн.
Читать онлайн книгу Python One-Liners - Christian Mayer страница 14
Hier wird zuerst die Benutzereingabe entgegengenommen, in ein Integer umgewandelt und in der Variablen x gespeichert
. Dann wird getestet, ob der Wert der Variablen größer als , gleich oder kleiner als der Wert 3 ist. Mit anderen Worten, der Code reagiert auf eine reale Eingabe, die auf differenzierte Weise unvorhersehbar ist.Schleifen
Für eine wiederholte Ausgabe von Codeschnipseln verwendet Python zwei Arten von Schleifen: for- und while-Schleifen. Mit deren Hilfe können Sie ganz leicht ein Programm schreiben, das nur aus zwei Zeilen Code besteht, die für immer und ewig laufen. Diese Wiederholung wäre sonst schwierig umzusetzen (eine Alternative ist die Rekursion.)
In Listing 1–11 können Sie beide Schleifenvarianten in Aktion sehen.
# Deklaration der for-Schleife
for i in [0, 1, 2]:
print(i)
'''
0
1
2
'''
# While-Schleife – gleiche Semantik
j = 0
while j < 3:
print(j)
j = j + 1
'''
0
1
2
'''
Listing 1–11 Die Verwendung der Schlüsselwörter for und while
Beide Schleifenvarianten geben auf der Shell die Integer 0, 1 und 2 aus, allerdings erledigen sie die Aufgabe unterschiedlich.
Die for-Schleife deklariert eine Schleifenvariable i, die iterativ alle Werte in der Liste [0, 1, 2] annimmt. Sie durchläuft alle Werte, bis keine mehr da sind.
Die while-Schleife führt den Schleifenkörper aus, solange eine bestimmte Bedingung erfüllt ist – in unserem Fall, solange j < 3.
Es gibt zwei grundsätzliche Wege, um eine Schleife zu beenden: Sie können eine Schleifenbedingung definieren, die irgendwann zu False ausgewertet wird, oder Sie benutzen das Schlüsselwort break an der passenden Position im Schleifenkörper. Listing 1–12 zeigt ein Beispiel für diesen Fall.
while True:
break # keine unendliche Schleife
print("hello world")
# hello world
Listing 1–12 Das Schlüsselwort break
Sie erzeugen eine while-Schleife mit einer Schleifenbedingung, die immer zu True ausgewertet wird. Auf den ersten Blick scheint sie also für immer zu laufen. Eine unendliche while-Schleife ist übliche Praxis, wenn man z. B. Webserver entwickelt, die für immer die folgende Prozedur wiederholen: auf eine neue Web-Anforderung warten und die Anforderung bedienen. Manchmal jedoch wollen Sie eine Schleife dennoch vorzeitig beenden. Im Webserver-Beispiel würden Sie aus Sicherheitsgründen aufhören, Dateien auszuliefern, wenn Ihr Server entdeckt, dass er angegriffen wird. In diesen Fällen können Sie die Schleife mit dem Schlüsselwort break anhalten und den Code ausführen, der unmittelbar folgt. In Listing 1–12 führt der Code print("hello world") aus, nachdem die Schleife vorzeitig endet.
Man kann den Python-Interpreter auch zwingen, bestimmte Bereiche in der Schleife zu überspringen, ohne sie vorzeitig zu beenden. So könnten Sie z. B. bösartige Web-Anforderungen überspringen, statt den Server komplett anzuhalten. Dies erreichen Sie mit der Anweisung continue, die den aktuellen Schleifendurchlauf beendet und den Ausführungsfluss wieder zurück zur Schleifenbedingung führt (siehe Listing 1–13).
while True:
continue
print("43") # dead Code
Listing 1–13 Die Verwendung des Schlüsselworts continue
Dieser Code wird für immer ausgeführt, ohne auch nur einmal die print-Anweisung auszuführen. Das liegt daran, dass die continue-Anweisung den aktuellen Schleifendurchlauf beendet und wieder zurück zum Anfang geht, sodass die Ausführung niemals zur print-Anweisung gelangt. Code, der niemals ausgeführt wird, wird als toter Code bezeichnet. Aus diesem Grund wird die continue-Anweisung (genau wie die break-Anweisung) üblicherweise unter einer bestimmten Bedingung eingesetzt, indem man eine bedingte if-else-Umgebung verwendet.
Funktionen
Funktionen helfen Ihnen, Codeausschnitte nach Belieben wiederzuverwenden: Sie schreiben sie einmal und nutzen sie mehrfach. Sie definieren eine Funktion mit dem Schlüsselwort def, einem Funktionsnamen und einer Menge an Argumenten, mit denen Sie die Ausführung des Funktionskörpers anpassen. Der Aufruf der Funktion mit zwei Argumentmengen kann das Ergebnis der Funktion ganz dramatisch verändern. Sie können z. B. die Funktion square(x) definieren, die die Quadratzahl des eingegebenen Arguments x zurückgibt. Der Aufruf von square(10) ergibt 10 × 10 = 100, während der Aufruf von square(100) zu 100 × 100 = 10.000 führt.
Das Schlüsselwort return beendet die Funktion und übergibt den Ablauf der Ausführung zurück an den Aufrufer der Funktion. Sie können nach dem Schlüsselwort return einen optionalen Wert angeben, um das Ergebnis der Funktion zu spezifizieren (siehe Listing 1–14).
def appreciate(x, percentage):
return x + x * percentage / 100
print(appreciate(10000, 5))
# 10500.0
Listing