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!