n° 51
Application directe du cours · niveau 1 (application) · NSI (première), chapitre 4 — Les types construits · P-uplets, déballage et compréhensions
Énoncé
Écrire par compréhension : les cubes des entiers de 1 à 20 ; les multiples de 7 inférieurs à 100 ; les longueurs des mots d'un tableau de chaînes.
Corrigé
cubes = [i**3 for i in range(1, 21)]
# [1, 8, 27, 64, ..., 8000] -- 20 elements, le dernier est 20**3 = 8000
mult7 = [i for i in range(100) if i % 7 == 0]
# [0, 7, 14, 21, 28, 35, 42, 49, 56, 63, 70, 77, 84, 91, 98] -- 15 elements
mots = ["chat", "informatique", "de", "tableau"]
longueurs = [len(mot) for mot in mots]
# [4, 12, 2, 7]
Trois points d'attention, un par ligne.
- Les cubes :
range(1, 21)et nonrange(1, 20)— la borne derangeest exclue, et l'on veut inclus. Contrôle : éléments, le dernier vaut . - Les multiples de : en fait partie, car . L'oublier est l'erreur classique. Il y en a ( à ).
- Les longueurs : la compréhension porte ici sur un autre tableau, pas sur un
range. C'est la forme la plus utile en pratique.
Une seconde écriture des multiples de , sans filtre :
mult7 = [7 * k for k in range(15)]
Les deux donnent le même tableau — on l'a vérifié. La seconde ne teste rien : elle engendre directement. C'est plus rapide, mais il faut savoir d'avance qu'il y en a , ce qui est un calcul de plus. Quand la borne est connue, engendrer ; quand elle ne l'est pas, filtrer.
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.