Heim > Backend-Entwicklung > Python-Tutorial > Wie kann ich verhindern, dass rekursive Funktionen in Python „None' zurückgeben?

Wie kann ich verhindern, dass rekursive Funktionen in Python „None' zurückgeben?

DDD
Freigeben: 2024-12-21 02:21:11
Original
714 Leute haben es durchsucht

How Can I Prevent Recursive Functions from Returning None in Python?

Lösen des None-Return-Problems in rekursiven Funktionen

Beim Umgang mit rekursiven Funktionen ist die Sicherstellung einer ordnungsgemäßen Return-Behandlung von entscheidender Bedeutung, um unerwartete None-Werte zu vermeiden. Betrachten Sie die folgende Funktion, die Benutzer wiederholt auffordert, entweder „a“ oder „b“ einzugeben:

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

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

Wenn Benutzer „a“ oder „b“ richtig eingeben, funktioniert die Funktion wie erwartet, aber wenn sie eingeben Wenn Sie jedes andere Zeichen eingeben, gibt die Funktion eine Fehlermeldung aus und ruft sich selbst rekursiv auf. Allerdings gibt der rekursive Aufruf die gesammelte Eingabe nicht korrekt zurück.

Das Problem entsteht dadurch, dass der rekursive Aufruf nicht mit einer Return-Anweisung beendet wird, wenn die Eingabe nicht „a“ oder „b“ ist. Python interpretiert dies als Erreichen des Endes der Funktion und gibt implizit None zurück. Dieses Verhalten ähnelt:

def f(x):
    pass
print(f(20))  # Implicitly returns None
Nach dem Login kopieren

Um dieses Problem zu beheben, muss man die if-Anweisung ändern, um das Ergebnis des rekursiven get_input()-Aufrufs zurückzugeben:

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

Indem man dies einbezieht Anpassung gibt die Funktion die Eingabe auch dann korrekt zurück, wenn Benutzer falsche Zeichen eingeben und ihre Eingabe dann korrigieren.

Das obige ist der detaillierte Inhalt vonWie kann ich verhindern, dass rekursive Funktionen in Python „None' zurückgeben?. 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