Frage von Phreaky, 30

Python Iterative und Rekursive Form?

Ich habe folgendes Programm geschrieben:

    def function(string):
    while len(list(string)) > 0:
        string = list(string)
        print(string[-1])
        del string[-1]

    string = input("Bitte geben Sie einen String ein: ")

    function(string)    

Ist das in der Iterativen Form? Ich würde sagen ja. Und wie sieht das dann aus in der rekursiven Form?

Antwort
von NoHumanBeing, 22
def the_function(the_list):
print(the_list[-1])

if (len(the_list) > 1):
the_function(the_list[: -1])

return

the_string = raw_input("Bitte geben Sie einen String ein: ")
the_list = list(the_string)
the_function(the_list)
Kommentar von NoHumanBeing ,

Ein paar Anmerkungen.

Für Benutzereingaben in Python 2 bitte raw_input(...) benutzen, anstatt input(...). input(...) ist äquivalent zu eval(raw_input(...)), d. h. es führt dazu, dass der Python-Interpreter versucht, das eingegebene auszuführen. Gar keine gute Idee! Eine Benutzereingabe auszuführen, würde in einer echten Anwendung eine immense Sicherheitslücke darstellen.

In Python 3 gibt es kein raw_input(). Hier hat input() das Verhalten, das raw_input() in Python 2 hat.

Den String bitte nur einmal in eine Liste umwandeln, also außerhalb der Schleife bzw. Rekursion, sonst wandelst Du die Liste in eine Liste um, was in der Form keinen wirklichen Sinn ergibt.

Kommentar von ralphdieter ,

Den String bitte nur einmal in eine Liste umwandeln

Wozu? Deine Funktion kommt doch prima mit Strings zurecht!

Kommentar von NoHumanBeing ,

Stimmt eigentlich. ;-)

Python ist oftmals "cleverer", als der Entwickler es für möglich hält. ;-)

Kommentar von ralphdieter ,

Schön kurz und knackig!

Wenn Du das print() in die Bedingung ziehst (und auf len()>0 prüfst), klappt es auch für leere Eingaben.

Kommentar von NoHumanBeing ,

Stimmt. :-)

Keine passende Antwort gefunden?

Fragen Sie die Community