Écrire descripteurs(table), qui rend la liste des descripteurs
Application directe du cours · niveau 1 (application) · NSI (première), chapitre 6 — Traiter des données en tables · Lire une table, convertir ses colonnes
É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.
Les autres exercices de ce chapitre Le cours du chapitre
Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.