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 » ?

Pourquoi ma fonction de validation d'entrée récursive ne renvoie-t-elle aucun au lieu de « a » ou « b » ?

DDD
DDDoriginal
2024-12-21 01:30:09178parcourir

Why Does My Recursive Input Validation Function Return None Instead of 'a' or '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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn