Adloun

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], écrit for x in L: if x % 2 == 0: L.remove(x). Il ne provoque pas d'erreur et laisse L é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.

Exercices semblables

Le cours du chapitre · Tous les exercices du chapitre