Exercices Fonctions & Modules Closure avec historique
🎉

Bravo!

Intermédiaire 🧠 Fondamentaux 20 XP 0 personnes ont réussi

Closure avec historique

Les closures peuvent capturer n'importe quel type de donnee, pas seulement des nombres. On peut s'en servir pour créer des fonctions avec de la mémoire.

Imagine une fonction qui se souvient de toutes les valeurs qu'on lui a passees. A chaque appel, elle ajoute la nouvelle valeur a son historique et renvoie l'historique complet.

def creer_logger():
messages = []
def logger(msg):
messages.append(msg)
return messages.copy()
return logger

log = créer_logger()
log('debut') # renvoie ['debut']
log('milieu') # renvoie ['debut', 'milieu']

Note le .copy() : on renvoie une copie de la liste pour que l'appelant ne puisse pas modifier notre historique interne. C'est une bonne pratique.

Écris une fonction créer_accumulateur() qui renvoie une fonction. Cette fonction prend un nombre, l'ajoute a un total interne et renvoie le total actuel.

Exemple :
acc = créer_accumulateur()
acc(5) renvoie 5
acc(3) renvoie 8
acc(2) renvoie 10

Tests (3/4)

Premier ajout
acc = créer_accumulateur()
assert acc(5) == 5
Deuxieme ajout
acc = créer_accumulateur()
acc(5)
assert acc(3) == 8
Troisieme ajout
acc = créer_accumulateur()
acc(5)
acc(3)
assert acc(2) == 10

+ 0 tests cachés

Indices (3 disponibles)

solution.py