Maison >développement back-end >Tutoriel Python >Pourquoi ma fonction de validation d'entrée récursive ne renvoie-t-elle aucun au lieu de « a » ou « b » ?
Fonction récursive ne renvoyant aucun : problème et solution
Problème :
Une fonction récursive conçue pour valider la saisie de l'utilisateur et renvoyer "a" ou "b" renvoie de manière inattendue Aucun lorsqu'une saisie incorrecte est fournie, puis corrigé.
Code de fonction :
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
Comportement attendu :
Lorsque l'utilisateur saisit une entrée valide ("a " ou "b"), la fonction doit renvoyer la valeur de my_var.
Réel Comportement :
Lorsque l'utilisateur saisit une entrée non valide, puis saisit "a" ou "b", la fonction renvoie Aucun au lieu de la valeur d'entrée valide.
Raison :
Dans l'appel récursif dans l'instruction if :
get_input()
La valeur de retour du l'appel récursif n'est pas renvoyé par la fonction. Au lieu de cela, la fonction tombe à la fin sans rien retourner explicitement. En Python, tomber à la fin d'une fonction renvoie implicitement Aucun.
Solution :
Pour résoudre ce problème, renvoyez la valeur de retour de l'appel récursif dans l'instruction if :
if my_var != "a" and my_var != "b": print('You didn\'t type "a" or "b". Try again.') return get_input()
Cela garantit que lorsqu'une entrée non valide est fournie et corrigée, la fonction renvoie correctement la valeur de my_var, comme prévu.
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!