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
Susan Sarandonoriginal
2025-01-04 21:52:40786parcourir

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())

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

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

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())

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:
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