Maison >développement back-end >Tutoriel Python >Comment puis-je empêcher les fonctions récursives de ne renvoyer aucun en Python ?

Comment puis-je empêcher les fonctions récursives de ne renvoyer aucun en Python ?

DDD
DDDoriginal
2024-12-21 02:21:11718parcourir

How Can I Prevent Recursive Functions from Returning None in Python?

Résoudre le problème de retour Aucun dans les fonctions récursives

Lorsque vous traitez des fonctions récursives, il est crucial de garantir une gestion appropriée des retours pour éviter les valeurs Aucun inattendues. Considérez la fonction suivante qui invite à plusieurs reprises les utilisateurs à saisir « a » ou « b » :

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

Lorsque les utilisateurs saisissent correctement « a » ou « b », la fonction fonctionne comme prévu, mais s'ils saisissent tout autre caractère, la fonction imprime un message d'erreur et s'appelle récursivement. Cependant, l'appel récursif ne renvoie pas correctement l'entrée collectée.

Le problème vient du fait que l'appel récursif ne se termine pas par une instruction return lorsque l'entrée n'est pas "a" ou "b". Python interprète cela comme atteignant la fin de la fonction et renvoie implicitement None. Ce comportement est similaire à :

def f(x):
    pass
print(f(20))  # Implicitly returns None

Pour résoudre ce problème, il faut modifier l'instruction if pour renvoyer le résultat de l'appel récursif get_input() :

if my_var != "a" and my_var != "b":
    print('You didn\'t type "a" or "b". Try again.')
    return get_input()

En incorporant ceci ajustement, la fonction renvoie correctement l'entrée même lorsque les utilisateurs saisissent des caractères incorrects, puis corrigent leur saisie.

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
Article précédent:Fonctions de chaîne de jourArticle suivant:Fonctions de chaîne de jour