Leçon 9 / 9 — Chapitre 7: Modules, portée et fermetures
Cas pratique : un générateur de mots de passe avec compteur
Cette dernière leçon combine random, une closure avec nonlocal, et le module string (nouveau, mais simple : string.ascii_letters est juste une chaîne contenant toutes les lettres), pour générer des mots de passe tout en comptant combien ont été créés.
import random
import string
def creer_generateur():
total_genere = 0
def generer(longueur):
nonlocal total_genere
caracteres = string.ascii_letters + "0123456789"
mot_de_passe = ""
for i in range(longueur):
mot_de_passe = mot_de_passe + random.choice(caracteres)
total_genere = total_genere + 1
return mot_de_passe, total_genere
return generer
generateur = creer_generateur()
mot_de_passe, nombre = generateur(8)
print(f"Mot de passe #{nombre} : {mot_de_passe}")
mot_de_passe, nombre = generateur(10)
print(f"Mot de passe #{nombre} : {mot_de_passe}")
Ce que fait chaque partie :
creer_generateur()renvoie une closuregenerer, qui se souvient detotal_genereentre les appels grâce ànonlocal(vu dans ce chapitre).random.choice(caracteres)(vu dans ce chapitre) tire un caractère au hasard parmi les lettres et les chiffres, répétélongueurfois dans une boucle pour construire le mot de passe.genererrenvoie deux valeurs à la fois (retours multiples, vus au deuxième chapitre de ce module) : le mot de passe généré, et le numéro de génération.
Chaque appel à generateur(...) produit un mot de passe différent (aléatoire) et incrémente total_genere, affiché #1, #2, ainsi de suite — exactement le même mécanisme que le compteur de la leçon précédente, appliqué ici à un générateur utile.
À vous de jouer : appelez generateur(...) une troisième fois, et vérifiez que le numéro affiché passe bien à #3.
Continuez ce module
Débloquez les leçons restantes ainsi que la certification finale.
2 500 XOF / 3,81 € / 4,15 $
Débloquez les 85 leçons restantes de ce module
Votre paiement est vérifié avant l'activation de l'accès