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!