Adloun

L'effet de bord accidentel

Exercice · informatique (tronc commun des prépas scientifiques), chapitre 10 — Prouver et analyser : la boîte à outils formalisée

Énoncé

Prédire l'affichage du script suivant, diagnostiquer le problème et proposer deux corrections :

def normalise(notes: list) -> list:
    m = max(notes)
    for i in range(len(notes)):
        notes[i] = notes[i] / m
    return notes

brutes = [10, 15, 20]
normalisees = normalise(brutes)
print(brutes)

Corrigé

Le programme affiche [0.5, 0.75, 1.0]. La liste d'origine brutes a été modifiée par effet de bord. En effet, l'affectation notes[i] = ... modifie directement le contenu de la liste passée en paramètre, qui partage la même zone mémoire en raison de l'absence de copie.

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.