Maison >développement back-end >Tutoriel Python >Pourquoi ma fonction Python récursive renvoie-t-elle parfois « Aucun » ?
Comprendre la récursivité et pourquoi elle ne renvoie aucun
Lorsqu'une fonction s'appelle elle-même, on parle de récursivité. Cela peut être une technique puissante, mais il est crucial de comprendre le concept de valeurs de retour pour éviter de rencontrer des résultats inattendus.
Dans le code Python donné :
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())
Si l'utilisateur saisit "un " ou "b", la fonction fonctionne comme prévu et renvoie l'entrée. Cependant, un problème survient lorsque l'utilisateur saisit un caractère invalide puis une saisie valide. Le problème vient de l'appel récursif dans la condition if.
Lorsque my_var n'est pas "a" ou "b", la fonction invite correctement l'utilisateur à réessayer. Cependant, l'appel récursif à get_input() ne dispose pas d'une instruction return pour la valeur de retour de la fonction récursive. Sans retour approprié, Python renvoie implicitement None lorsque la fonction tombe à la fin.
Pour résoudre ce problème, l'appel récursif doit être modifié pour renvoyer le résultat de la fonction récursive :
if my_var != "a" and my_var != "b": print('You didn\'t type "a" or "b". Try again.') return get_input()
Avec ce changement, la fonction renverra correctement my_var une fois que l'utilisateur aura fourni une entrée valide, empêchant le retour de None.
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!