Résoudre le problème de retour Aucun dans les fonctions récursives
Lorsque vous traitez des fonctions récursives, il est crucial de garantir une gestion appropriée des retours pour éviter les valeurs Aucun inattendues. Considérez la fonction suivante qui invite à plusieurs reprises les utilisateurs à saisir « a » ou « b » :
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())
Lorsque les utilisateurs saisissent correctement « a » ou « b », la fonction fonctionne comme prévu, mais s'ils saisissent tout autre caractère, la fonction imprime un message d'erreur et s'appelle récursivement. Cependant, l'appel récursif ne renvoie pas correctement l'entrée collectée.
Le problème vient du fait que l'appel récursif ne se termine pas par une instruction return lorsque l'entrée n'est pas "a" ou "b". Python interprète cela comme atteignant la fin de la fonction et renvoie implicitement None. Ce comportement est similaire à :
def f(x): pass print(f(20)) # Implicitly returns None
Pour résoudre ce problème, il faut modifier l'instruction if pour renvoyer le résultat de l'appel récursif get_input() :
if my_var != "a" and my_var != "b": print('You didn\'t type "a" or "b". Try again.') return get_input()
En incorporant ceci ajustement, la fonction renvoie correctement l'entrée même lorsque les utilisateurs saisissent des caractères incorrects, puis corrigent leur saisie.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!