Exercice 01 : Validateur de Mot de Passe
Objectif
Cet exercice a pour but de vous faire créer une fonction qui prend un mot de passe en entrée et retourne un booléen (True/False) indiquant s'il respecte un ensemble de règles de validation.
Contexte
Vous devez implémenter une fonction de validation pour un formulaire d'inscription. Un mot de passe est considéré comme valide s'il respecte toutes les règles suivantes :
- Il doit faire au moins 8 caractères de long.
- Il doit contenir au moins une lettre majuscule.
- Il doit contenir au moins un chiffre.
Énoncé
-
Créez un nouveau fichier Python nommé
password_validator.py. -
Définissez une fonction nommée
is_password_validqui accepte un seul paramètre,password.- N'oubliez pas d'ajouter une docstring pour expliquer ce que fait la fonction.
-
À l'intérieur de la fonction, implémentez la logique de validation : a. Vérifiez la longueur : La première condition est de vérifier si
len(password)est supérieur ou égal à 8. Si ce n'est pas le cas, la fonction peut immédiatement retournerFalse.b. Vérifiez la présence d'une majuscule et d'un chiffre : - Initialisez deux variables booléennes,
has_upperethas_digit, àFalse. - Utilisez une boucleforpour itérer sur chaquechardupassword. - Dans la boucle, utilisez les méthodes de chaînes de caractères.isupper()et.isdigit()pour vérifier la nature du caractère. - Si vous trouvez une majuscule, passezhas_upperàTrue. - Si vous trouvez un chiffre, passezhas_digitàTrue.c. Retournez le résultat final : Après la boucle, la fonction doit retourner le résultat de l'expression
has_upper and has_digit. Si les deux sontTrue(et que la condition de longueur a été passée), le mot de passe est valide. -
Testez votre fonction :
- À l'extérieur de la fonction, créez une liste de mots de passe à tester.
- Utilisez une boucle
forpour appeler votre fonctionis_password_validsur chaque mot de passe et affichez le résultat de manière claire.
Résultat Attendu
Testing 'short': False
Testing 'longpasswordwithoutdigits': False
Testing 'LongPasswordWithoutDigits': False
Testing 'longpasswordwith123': False
Testing 'ValidPass1': True
Testing 'AnotherValidPassword2': True
Cliquez ici pour voir un exemple de code de solution
# password_validator.py
def is_password_valid(password):
"""
Checks if a password meets the required criteria.
A valid password must:
1. Be at least 8 characters long.
2. Contain at least one uppercase letter.
3. Contain at least one digit.
Args:
password (str): The password to validate.
Returns:
bool: True if the password is valid, False otherwise.
"""
# 1. Vérification de la longueur
if len(password) < 8:
return False
# 2. Initialisation des "drapeaux"
has_upper = False
has_digit = False
# 3. Itération pour trouver une majuscule et un chiffre
for char in password:
if char.isupper():
has_upper = True
elif char.isdigit():
has_digit = True
# Optimisation : si on a déjà trouvé les deux, on peut arrêter la boucle
# if has_upper and has_digit:
# break
# 4. Retourner le résultat final
return has_upper and has_digit
# --- Zone de test ---
passwords_to_test = [
"short",
"longpasswordwithoutdigits",
"LongPasswordWithoutDigits",
"longpasswordwith123",
"ValidPass1",
"AnotherValidPassword2"
]
for pwd in passwords_to_test:
is_valid = is_password_valid(pwd)
print(f"Testing '{pwd}': {is_valid}")