NSI (première) · Chapitre 6 · Application directe du cours
Écrire descripteurs(table), qui rend la liste des descripteurs
Traiter des données en tables · Lire une table, convertir ses colonnes · niveau 1 (application)
Énoncé
Écrire descripteurs(table), qui rend la liste des descripteurs. Que doit-elle rendre sur une table vide, et pourquoi n'est-ce pas une erreur ?
Corrigé
def descripteurs(table):
"""Liste des descripteurs, dans l'ordre du fichier.
Postcondition : rend [] si la table est vide.
"""
if len(table) == 0:
return []
return list(table[0].keys())
descripteurs(eleves) # ['nom', 'classe', 'moyenne', 'option']
descripteurs([]) # []
Le cas limite. Sans le test, table[0] lève une IndexError. Or une table vide n'est pas une anomalie : un fichier CSV réduit à sa ligne d'en-tête, ou une sélection qui ne retient rien, en produit une couramment. La fonction doit donc y répondre, et [] est la seule réponse sensée.
Une réserve honnête. Les descripteurs sont lus sur la première ligne. Cela suppose que toutes les lignes ont les mêmes clés — ce que importer vérifie par une assertion. Sans cette garantie, la fonction rendrait les descripteurs d'une ligne, pas ceux de la table.
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.