Heim > Backend-Entwicklung > Python-Tutorial > Warum gibt meine rekursive Eingabevalidierungsfunktion „Keine' zurück?

Warum gibt meine rekursive Eingabevalidierungsfunktion „Keine' zurück?

Susan Sarandon
Freigeben: 2025-01-04 21:52:40
Original
750 Leute haben es durchsucht

Why Does My Recursive Input Validation Function Return None?

Warum scheint meine rekursive Funktion None zurückzugeben?

Stellen Sie sich eine rekursive Funktion vor, die Benutzereingaben validiert:

def get_input():
    my_var = input('Enter "a" or "b": ')

    if my_var != "a" and my_var != "b":
        print('You didn\'t type "a" or "b". Try again.')
        get_input()  # Recursively call the function
    else:
        return my_var

print('got input:', get_input())
Nach dem Login kopieren

Wenn der Benutzer „a“ oder „b“ eingibt, funktioniert alles wie erwartet. Wenn der Benutzer jedoch zunächst eine ungültige Eingabe eingibt und diese dann korrigiert, scheint die Funktion None anstelle der Benutzereingabe zurückzugeben.

Dieses unregelmäßige Verhalten ist auf ein Versehen im rekursiven Zweig zurückzuführen. Während sich die Funktion erneut korrekt aufruft, gibt sie das Ergebnis des rekursiven Aufrufs nicht zurück:

if my_var != "a" and my_var != "b":
    print('You didn\'t type "a" or "b". Try again.')
    get_input()  # This line should be replaced
Nach dem Login kopieren

Um dies zu beheben, müssen wir den aus dem rekursiven Aufruf erhaltenen Wert zurückgeben:

if my_var != "a" and my_var != "b":
    print('You didn\'t type "a" or "b". Try again.')
    return get_input()  # We return the result of the recursive call
Nach dem Login kopieren

Diese Änderung stellt sicher, dass die Funktion den rekursiven Stapel ordnungsgemäß kaskadiert und die korrigierte Benutzereingabe zurückgibt.

# Modified function
def get_input():
    my_var = input('Enter "a" or "b": ')

    if my_var != "a" and my_var != "b":
        print('You didn\'t type "a" or "b". Try again.')
        return get_input()  # We return the result of the recursive call
    else:
        return my_var

print('got input:', get_input())
Nach dem Login kopieren

Mit Durch diese Änderung gibt die Funktion die Eingaben des Benutzers korrekt zurück, auch nachdem ungültige Eingaben verarbeitet wurden.

Das obige ist der detaillierte Inhalt vonWarum gibt meine rekursive Eingabevalidierungsfunktion „Keine' zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage