Heim > Backend-Entwicklung > Python-Tutorial > Warum gibt meine rekursive Eingabevalidierungsfunktion None anstelle von „a' oder „b' zurück?

Warum gibt meine rekursive Eingabevalidierungsfunktion None anstelle von „a' oder „b' zurück?

DDD
Freigeben: 2024-12-21 01:30:09
Original
176 Leute haben es durchsucht

Why Does My Recursive Input Validation Function Return None Instead of 'a' or 'b'?

Rekursive Funktion, die Keine zurückgibt: Problem und Lösung

Problem:

Eine rekursive Funktion entworfen Um Benutzereingaben zu validieren und „a“ oder „b“ zurückzugeben, wird unerwartet „None“ zurückgegeben, wenn eine falsche Eingabe erfolgt und dann korrigiert.

Funktionscode:

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()
    else:
        return my_var
Nach dem Login kopieren

Erwartetes Verhalten:

Wenn der Benutzer eine gültige Eingabe eingibt ("a „ oder „b“), die Funktion sollte den Wert von my_var.

Actual zurückgeben Verhalten:

Wenn der Benutzer eine ungültige Eingabe macht und dann „a“ oder „b“ eingibt, gibt die Funktion None anstelle des gültigen Eingabewerts zurück.

Grund:

Im rekursiven Aufruf innerhalb der if-Anweisung:

get_input()
Nach dem Login kopieren

Der Rückgabewert des rekursiven Aufrufs wird von der Funktion nicht zurückgegeben. Stattdessen fällt die Funktion am Ende ab, ohne explizit etwas zurückzugeben. In Python gibt ein Abfall vom Ende einer Funktion implizit None zurück.

Lösung:

Um dieses Problem zu beheben, geben Sie den Rückgabewert des rekursiven Aufrufs innerhalb der if-Anweisung zurück:

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

Dadurch wird sichergestellt, dass die Funktion den Wert von my_var korrekt zurückgibt, wenn eine ungültige Eingabe bereitgestellt und korrigiert wird beabsichtigt.

Das obige ist der detaillierte Inhalt vonWarum gibt meine rekursive Eingabevalidierungsfunktion None anstelle von „a' oder „b' 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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage