Aller au contenu

Exercices corrigés — Algorithmique et programmation Python (Seconde)

Quatre niveaux de difficulté, du plus simple au plus exigeant. Chaque exercice a sa correction détaillée, étape par étape.

2 exercices de niveau « Découverte ». Voir les 8 exercices.

Exercice 1 Découverte

Que renvoie la fonction suivante pour n = 5 ? Justifier en donnant les valeurs successives de r.

def mystere(n):
    r = 1
    for k in range(n):
        r = 2*r
    return r
Voir la correction
Correction détaillée

range(5) produit les cinq valeurs 0, 1, 2, 3, 4 : le corps de la boucle est exécuté cinq fois, quelle que soit la valeur de k, qui ne sert qu'à compter.
À chaque passage, r est doublé : au départ r = 1, puis 2, 4, 8, 16 et enfin 32.
La fonction renvoie 32, c'est-à-dire 25 : après n passages, r vaut 2n (c'est l'invariant de boucle). mystere(0) renverrait 1 = 20, la boucle n'étant pas exécutée.
Un tableau de trace (colonne k, colonne r) est la méthode la plus sûre pour lire un tel programme ; ici il tient en une ligne par passage.

Exercice 2 Découverte

On exécute les instructions suivantes. Donner la valeur de chaque variable à la fin, en précisant son type.

x = 3
x = x + 2
x = 4 * x
y = x % 6
z = x // 6
test = (y == 2) and (z > 5)
Voir la correction
Correction détaillée

ligne 1 : x reçoit 3. Ligne 2 : on calcule x + 2 = 5 avec l'ancienne valeur, puis on stocke 5 dans x ; le signe = est une affectation, pas une égalité. Ligne 3 : x reçoit 4 × 5 = 20.
Ligne 4 : % donne le reste de la division entière, 20 = 3 × 6 + 2, donc y = 2. Ligne 5 : // donne le quotient entier, z = 3.
Ligne 6 : y == 2 est vrai (True), z > 5 est faux (False) puisque z = 3 ; un « et » n'est vrai que si les deux conditions le sont, donc test = False.
Types finaux : x, y et z sont des entiers (int), test est un booléen (bool). Attention à ne pas confondre = (affecter) et == (comparer), ni / (division décimale, 206 ≈ 3,33) avec //.