Étape 1
Analysons le déroulement de l'exécution de la fonction étape par étape.
Étape 2
La liste initiale est $L = [4, 7, 2, 5, 8]$, de longueur 5.
Étape 3
Au début, la liste $res$ est vide : $res = []$.
Étape 4
La boucle $for\ i\ in\ range(len(L))$ parcourt les indices de 0 à 4 :
Étape 5
Pour $i = 0$ : $L[0] = 4$ (pair). On ajoute $4 // 2 = 2$ à $res$. D'où $res = [2]$.
Étape 6
Pour $i = 1$ : $L[1] = 7$ (impair). On ajoute $7 \times 3 = 21$ à $res$. D'où $res = [2, 21]$.
Étape 7
Pour $i = 2$ : $L[2] = 2$ (pair). On ajoute $2 // 2 = 1$ à $res$. D'où $res = [2, 21, 1]$.
Étape 8
Pour $i = 3$ : $L[3] = 5$ (impair). On ajoute $5 \times 3 = 15$ à $res$. D'où $res = [2, 21, 1, 15]$.
Étape 9
Pour $i = 4$ : $L[4] = 8$ (pair). On ajoute $8 // 2 = 4$ à $res$. D'où $res = [2, 21, 1, 15, 4]$.
Étape 10
À la sortie de la boucle, la liste est $res = [2, 21, 1, 15, 4]$.
Étape 11
L'instruction $res.pop(1)$ supprime l'élément situé à l'indice 1, c'est-à-dire le nombre 21.
Étape 12
La liste devient alors $res = [2, 1, 15, 4]$.
Étape 13
L'instruction $res.append(10)$ ajoute l'entier 10 à la fin de la liste.
Étape 14
La liste finale est donc $res = [2, 1, 15, 4, 10]$.
Étape 15
Enfin, $sum(res)$ calcule la somme des éléments :
Étape 16
$$2 + 1 + 15 + 4 + 10 = 32$$
Étape 17
La valeur renvoyée par la fonction est 32.
Méthode clé
Pour tracer un algorithme manipulant une liste, notez à chaque étape l'état exact de la liste et souvenez-vous que les indices commencent à 0.
Piège à éviter
Confondre l'indice et la valeur lors de l'utilisation de pop(1) : pop(1) enlève le deuxième élément de la liste, pas le nombre 1.