Maison >développement back-end >Tutoriel Python >Comment puis-je garantir une saisie utilisateur valide dans mon programme ?

Comment puis-je garantir une saisie utilisateur valide dans mon programme ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-27 06:01:09628parcourir

How Can I Ensure Valid User Input in My Program?

Demande de saisie utilisateur jusqu'à ce qu'une réponse valide soit fournie

En programmation, il est crucial de s'assurer que la saisie utilisateur est valide avant de procéder à d'autres opérations. Si des données non valides sont acceptées, cela peut entraîner des résultats incorrects ou des plantages du programme. Explorons des techniques efficaces pour gérer la validation des entrées utilisateur et prévenir les erreurs.

Exceptions et bouclage

Une approche consiste à utiliser des blocs try et except pour détecter les erreurs qui peuvent survenir lorsque analyser les entrées de l'utilisateur. En encapsulant l'opération d'analyse des entrées dans une boucle while, vous pouvez demander en continu une entrée jusqu'à ce qu'elle réponde aux critères souhaités.

while True:
    try:
        age = int(input("Please enter your age: "))
    except ValueError:
        print("Sorry, I didn't understand that.")
        continue
    else:
        break

Logique de validation personnalisée

De plus Pour la gestion des exceptions, vous pouvez implémenter vos propres règles de validation pour vérifier l'entrée. Par exemple, vous pouvez rejeter les valeurs négatives ou en dehors d'une plage spécifique.

while True:
    data = input("Pick an answer from A to D:")
    if data.lower() not in ('a', 'b', 'c', 'd'):
        print("Not an appropriate choice.")
    else:
        break

Gestion des erreurs pour tous les cas

Pour une validation complète des entrées, vous pouvez combiner gestion des exceptions avec des règles personnalisées dans une seule boucle. Cela garantit que les erreurs d'analyse et les valeurs invalides sont détectées et traitées de manière appropriée.

while True:
    try:
        age = int(input("Please enter your age: "))
    except ValueError:
        print("Sorry, I didn't understand that.")
        continue

    if age < 0:
        print("Sorry, your response must not be negative.")
        continue
    else:
        break

Encapsulation et fonctions réutilisables

Si vous rencontrez fréquemment le besoin de validation des entrées utilisateur , il est avantageux d'encapsuler le code pertinent dans une fonction distincte. Cela permet la réutilisation du code et simplifie le processus de collecte des entrées.

def get_non_negative_int(prompt):
    while True:
        value = int(input(prompt))
        if value >= 0:
            break
    return value

age = get_non_negative_int("Please enter your age: ")

Extensibilité et validation des entrées génériques

En étendant davantage le concept, vous pouvez créer un système hautement fonction de validation d'entrée polyvalente qui couvre un large éventail d'exigences.

def sanitised_input(prompt, type_=None, min_=None, max_=None, range_=None):
    while True:
        ui = input(prompt)
        try:
            if type_ is not None:
                ui = type_(ui)
        except ValueError:
            continue

        # Perform further validation checks and return valid input if all criteria are met.

Pièges courants et meilleurs Pratiques

  • Évitez les instructions d'entrée redondantes : L'utilisation de plusieurs instructions d'entrée pour obtenir la validation est un mauvais style de programmation et peut augmenter le risque d'erreurs.
  • S'abstenir de récursion : Bien que la récursion puisse sembler tentante pour la validation des entrées, elle peut entraîner des débordements de pile, en particulier avec un nombre excessif d'invalides. entrées.
  • Favorisez la boucle pour une gestion efficace : L'utilisation de boucles while permet une gestion efficace des erreurs en demandant continuellement une entrée jusqu'à ce qu'une réponse valide soit reçue.

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