algorithmique et programmation (première) · Chapitre 2 · Exercice d'entraînement
Supprimer en parcourant : le piège
La notion de liste · Parcourir et modifier · niveau 3 (difficile)
Énoncé
Supprimer en parcourant : le piège. On veut retirer les nombres pairs de L = [2, 4, 4, 5, 6].
- Un premier programme écrit :
for i in range(len(L)):
if L[i] % 2 == 0:
del L[i]
Suivre l'exécution (valeur de i et contenu de L à chaque tour) et expliquer l'erreur obtenue.
- Un second programme, repris depuis
L = [2, 4, 4, 5, 6], écritfor x in L: if x % 2 == 0: L.remove(x). Il ne provoque pas d'erreur et laisseLégale à[4, 5]. Pourquoi un a-t-il survécu ? - Écrire une fonction
sans_pairs(L)qui renvoie une nouvelle liste, en compréhension, et ne présente aucun de ces défauts.
Un exercice à chercher : son corrigé n'est pas publié. Sur Adloun, le tuteur guide par questions, sans donner la réponse.