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
DDDOriginal
2024-12-21 01:30:09192Durchsuche

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

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()

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()

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!

Stellungnahme:
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