Aller au contenu

Exercices corrigés — Algorithmique et Python (Terminale)

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

On considère la suite définie par u0 = 2 et un+1 = 3un − 1. a) Écrire une fonction Python terme(n) qui renvoie un. b) Que renvoie terme(3) ? Justifier par un déroulement de la boucle.

Voir la correction
Correction détaillée

a) On part de u = 2, la valeur de u0, et l'on applique n fois la relation de récurrence :

def terme(n):
    u = 2
    for k in range(n):
        u = 3 * u - 1
    return u

L'invariant de boucle est : après k passages dans la boucle, u vaut uk. Comme range(n) provoque exactement n passages, la fonction renvoie un.
b) Déroulement de terme(3) : au départ u = 2 ; premier passage, u = 3 * 2 - 1 = 5 ; deuxième passage, u = 3 * 5 - 1 = 14 ; troisième passage, u = 3 * 14 - 1 = 41. La fonction renvoie 41 = u3, ce qui correspond aux termes calculés au chapitre sur les suites.
Erreur fréquente : écrire range(n + 1), qui ferait un passage de trop et renverrait un+1. Tester la fonction sur terme(0), qui doit renvoyer 2, et sur terme(1), qui doit renvoyer 5, permet de le détecter.

Exercice 2 Découverte

Que renvoie la fonction suivante pour mystere(5) ?

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

range(n + 1) fait prendre à k les valeurs 0, 1, …, n, soit n + 1 valeurs. À chaque passage, on ajoute à s le nombre 2*k + 1, c'est-à-dire le (k + 1)-ième nombre impair.
Pour mystere(5), k prend les valeurs 0 à 5 et s vaut successivement 1, puis 1 + 3 = 4, puis 4 + 5 = 9, 9 + 7 = 16, 16 + 9 = 25 et enfin 25 + 11 = 36. La fonction renvoie 36.
Les valeurs intermédiaires 1, 4, 9, 16, 25, 36 sont les carrés parfaits : la somme des n + 1 premiers nombres impairs vaut (n + 1)2. Preuve : 1 + 3 + … + (2n + 1) = 2(0 + 1 + … + n) + (n + 1) = 2 × nn + 12 + (n + 1) = (n + 1)(n + 1). La fonction mystere(n) renvoie donc toujours (n + 1)2.