Maison >développement back-end >Tutoriel Python >Comment garantir une entrée utilisateur valide en Python ?

Comment garantir une entrée utilisateur valide en Python ?

Barbara Streisand
Barbara Streisandoriginal
2025-01-02 17:01:40349parcourir

How to Ensure Valid User Input in Python?

Demander une entrée utilisateur valide jusqu'à sa réception

Lors de la demande d'entrée utilisateur, il est crucial de gérer les réponses non valides avec élégance plutôt que de planter ou d'accepter des valeurs incorrectes . Les techniques suivantes garantissent l'obtention d'une entrée valide :

Essayer/Excepter pour une entrée exceptionnelle

Utilisez try/sauf pour intercepter une entrée spécifique qui ne peut pas être analysée. Par exemple :

while True:
    try:
        age = int(input("Please enter your age: "))
    except ValueError:
        print("Sorry, that's not a valid age.")
        continue
    break

Validation personnalisée pour des règles supplémentaires

Parfois, les entrées qui peuvent être analysées peuvent ne pas répondre à certains critères. Vous pouvez ajouter une logique de validation personnalisée pour rejeter des valeurs spécifiques :

while True:
    data = input("Enter a positive number: ")
    if int(data) < 0:
        print("Invalid input. Please enter a positive number.")
        continue
    break

Combiner la gestion des exceptions et la validation personnalisée

Combinez les deux techniques pour gérer à la fois les règles d'analyse non valides et de validation personnalisée. :

while True:
    try:
        age = int(input("Please enter your age: "))
    except ValueError:
        print("Sorry, that's not a valid age.")
        continue
    if age < 0:
        print("Invalid age. Please enter a positive number.")
        continue
    break

Encapsulation dans un Fonction

Pour réutiliser la logique de validation des entrées personnalisée, encapsulez-la dans une fonction :

def get_positive_age():
    while True:
        try:
            age = int(input("Please enter your age: "))
        except ValueError:
            print("Sorry, that's not a valid age.")
            continue
        if age < 0:
            print("Invalid age. Please enter a positive number.")
            continue
        return age

Assainissement avancé des entrées

Vous pouvez créer une fonction de saisie plus générique pour gérer divers scénarios de validation :

def get_valid_input(prompt, type_=None, min_=None, max_=None, range_=None):
    while True:
        try:
            value = type_(input(prompt))
        except ValueError:
            print(f"Invalid input type. Expected {type_.__name__}.")
            continue
        if max_ is not None and value > max_:
            print(f"Value must be less than or equal to {max_}.")
            continue
        if min_ is not None and value < min_:
            print(f"Value must be greater than or equal to {min_}.")
            continue
        if range_ is not None and value not in range_:
            template = "Value must be {}."
            if len(range_) == 1:
                print(template.format(*range_))
            else:
                expected = " or ".join((
                    ", ".join(str(x) for x in range_[:-1]),
                    str(range_[-1])
                ))
                print(template.format(expected))
        else:
            return value

Cette fonction vous permet de spécifier les données type, plage et autres contraintes pour l'entrée utilisateur.

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