Maison > développement back-end > Tutoriel Python > Pourquoi ma fonction de validation d'entrée récursive ne renvoie-t-elle aucun résultat ?

Pourquoi ma fonction de validation d'entrée récursive ne renvoie-t-elle aucun résultat ?

Susan Sarandon
Libérer: 2025-01-04 21:52:40
original
758 Les gens l'ont consulté

Why Does My Recursive Input Validation Function Return None?

Pourquoi ma fonction récursive semble-t-elle renvoyer Aucun ?

Considérez une fonction récursive qui valide la saisie de l'utilisateur :

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()  # Recursively call the function
    else:
        return my_var

print('got input:', get_input())
Copier après la connexion

Si l'utilisateur saisit « a » ou « b », tout fonctionne comme prévu. Cependant, si l'utilisateur saisit initialement une entrée invalide puis la corrige, la fonction semble renvoyer Aucun au lieu de l'entrée de l'utilisateur.

Ce comportement erratique provient d'un oubli dans la branche récursive. Bien que la fonction s'appelle à nouveau correctement, elle ne parvient pas à renvoyer le résultat de l'appel récursif :

if my_var != "a" and my_var != "b":
    print('You didn\'t type "a" or "b". Try again.')
    get_input()  # This line should be replaced
Copier après la connexion

Pour résoudre ce problème, nous devons renvoyer la valeur obtenue à partir de l'appel récursif :

if my_var != "a" and my_var != "b":
    print('You didn\'t type "a" or "b". Try again.')
    return get_input()  # We return the result of the recursive call
Copier après la connexion

Ce changement garantit que la fonction se répercute correctement sur la pile récursive, renvoyant l'entrée utilisateur corrigée.

# Modified function
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.')
        return get_input()  # We return the result of the recursive call
    else:
        return my_var

print('got input:', get_input())
Copier après la connexion

Avec cette modification, la fonction renverra correctement l'entrée de l'utilisateur, même après avoir traité des entrées non valides.

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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal