PaliSkill
Python intermédiaire

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 closure generer, qui se souvient de total_genere entre 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é longueur fois dans une boucle pour construire le mot de passe.
  • generer renvoie 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