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
Libérer: 2024-12-21 02:21:11
original
714 Les gens l'ont consulté

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())
Copier après la connexion

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
Copier après la connexion

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()
Copier après la connexion

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!

source:php.cn
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal