NSI (première) · Chapitre 6 · Exercice de TD
Deux élèves peuvent porter le même nom sans que ce soit une erreur
Traiter des données en tables · Doublons, cohérence, domaines · niveau 3 (difficile)
Énoncé
Deux élèves peuvent porter le même nom sans que ce soit une erreur. Écrire doublons_composite(table, colonnes), qui cherche les doublons sur une combinaison de colonnes, et montrer sur un exemple que le résultat n'est pas celui de doublons colonne par colonne.
Corrigé
Une clé composite est un p-uplet (chapitre 4) : c'est ce qui permet de s'en servir comme clé de dictionnaire, un tableau ne le pourrait pas.
def doublons_composite(table, colonnes):
"""Combinaisons de valeurs qui apparaissent plus d'une fois.
Précondition : toutes les colonnes existent dans chaque ligne, et
leurs valeurs sont hachables (nombres, chaînes...).
"""
effectifs = {}
for ligne in table:
c = tuple(ligne[k] for k in colonnes)
effectifs[c] = effectifs.get(c, 0) + 1
return [c for c, n in effectifs.items() if n > 1]
Sur la table de quatre lignes : Nour en 1G3, Nour en 1G1, Yanis en 1G3 (deux fois),
| Clé | Doublons trouvés |
|---|---|
nom | ['Nour', 'Yanis'] |
(nom, classe) | [('Yanis', '1G3')] |
(nom, classe, moyenne) | [('Yanis', '1G3', 9.5)] |
Ce que la comparaison enseigne. Sur la seule colonne nom, Nour est signalée — alors que ce sont deux personnes différentes, dans deux classes différentes : c'est un faux positif. Ajouter la classe le fait disparaître. Il ne reste que Yanis, dupliqué à l'identique : là, c'est un vrai doublon.
La leçon. Un doublon n'existe pas dans l'absolu : il existe par rapport à une clé. Choisir la clé, c'est décider ce qu'« être la même ligne » veut dire — et c'est une décision de conception, pas de programmation.
100 % gratuit
Essaie le suivant avec le tuteur
- L'exercice suivant avec le tuteur, sans compte : il guide pas à pas, sans donner la réponse
- 16 autres exercices corrigés dans ce chapitre, et 20 à chercher avec le tuteur
- Le podcast et la vidéo du chapitre et la correction filmée du TD : 2 minutes sans compte
Sans compte : le cours, 2 minutes de podcast et de vidéo et un exercice avec le tuteur. Pour tout le reste : inscription gratuite en 30 secondes, sans carte bancaire.