<

Kleiner Python-Spicker

>

4 while – Schleife, Funktionen, Rekursion

Die Seite gibt den Hinweis, urllib zu verwenden. Damit kann man eine URL wie eine Datei öffen; natürlich brauchen wir wieder re, um die Zahl herauszufischen.

Schleife

Der Trick dabei ist, dass wir das solange wiederholen müssen, wie Zahlen zu finden sind. Deshalb programmieren wir eine Schleife, die im wesentlichen Folgendes tut:

solange ich zur nächsten URL weitermuss:
schaff die nächste URL ran
such die Zahl

Auf Python geht das nicht mit solange, sondern mit while, aber sonst ist das gleich.

# dies ist ein Kommentar, denn da steht ein # davor
x=1; y=1 # so schreibt man 2 Anweisungen in eine Zeile
while x < 1000 : # solange x kleiner als 1000 ist, tue dies:
    x = x+y
    y = x-y
print x

Achtung: Python erkennt an der Einrückung, wie weit die Schleife zu gehen hat (d.h. "y = x-y" wird wie "x = x+y" jedesmal berechnet, aber "print x" nur am Ende. Soll x jedesmal ausgedruckt werden, muss der "print"-Befehl auch genausoweit eingerückt werden.

Python erledigt diese Einrückungen nach eineem Doppelpunkt normalerweise automatisch; mit Backspace (deutsch "Rückschritt",die Taste über der Eingabetaste) kommt man eine Einrückung nach links, mit der Tabulatortaste (links neben Q) eine nach rechts. Standardmäßig werden 4 Leerzeichen für eine Einrückung verwendet.

Siehe auch http://docs.python.org/ref/while.html . Ich fand hier auch das if hilfreich, obschon nicht unbedingt erforderlich, und die anderen zusammengesetzten Anweisungen brauchen wir sicher auch demnächst noch.

Aber sicher habt ihr diese Befehle schon im Tutorial eurer Wahl kennengelernt, oder?

Rekursion

Ein anderer, sehr nützlicher Ansatz geht davon aus, dass man Python beibringt, wie "schaff die URL ran" funktioniert. Generell ist es möglich, Python-Aktionen beliebig zu benennen, so z.B.:

def gib_Trinkgeld(x) :
    return (x * 1.1)

Man kann dann ganz gemütlich gib_Trinkgeld(20) oder gib_Trinkgeld(14.95) eingeben. Das Programm, was oben als Beispiel für while steht, sieht als Funktion etwa so aus:

def fibonacci( x, y ) :
    if x < 1000 :
        fibonacci( x+y, x )
    else :
        print x

fibonacci(1,1)

Diese Funktion hat die seltsame Eigenschaft, dass sie sich selbst benutzt. Dieses Verhalten nennt man Rekursion. Es ist ein wenig gefährlich, denn wenn man nicht angibt, wie lange die Rekursion laufen soll (in diesem Fall mit if x < 1000), dann hört sie gar nicht mehr auf. Man spricht dann von unendlicher Rekursion. Meistens sind rekursiv geschreibene Programme aber leichter zu überblicken als solche mit iterativen Schleifen.

Wie lässt sich Challenge 4 rekursiv lösen?

<

Kleiner Python-Spicker

>

© 2005 Michael Mendelsohn