Aller au contenu

Exercices corrigés — Algorithmique et Python (Première)

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 exécute le script suivant. Quelle est la valeur finale de u ? Justifier en donnant les valeurs successives.

u = 2
for k in range(4):
    u = 3*u - 1
Voir la correction
Correction détaillée

range(4) fait prendre à k les valeurs 0, 1, 2, 3 : le corps de la boucle est exécuté quatre fois. À chaque passage, u est remplacé par 3*u - 1.

passagedépart1234
u23 × 2 − 1 = 53 × 5 − 1 = 143 × 14 − 1 = 413 × 41 − 1 = 122
La valeur finale de u est 122.
Ce script calcule le terme u4 de la suite définie par u0 = 2 et un+1 = 3un − 1 : après k passages, u contient uk (invariant de boucle). Avec range(5), on obtiendrait u5 = 365.

Exercice 2 Découverte

Pourquoi la fonction suivante ne renvoie-t-elle rien ? La corriger.

def carre(x):
    x**2

Voir la correction
Correction détaillée

le corps de la fonction calcule bien x**2, mais ce résultat n'est ni stocké ni renvoyé : il est calculé puis oublié. En l'absence d'instruction return, Python renvoie la valeur spéciale None, et carre(3) ne vaut pas 9.
Version corrigée :

def carre(x):
    return x**2

Test : carre(3) renvoie 9 et carre(-2) renvoie 4.
Ne pas confondre return, qui transmet une valeur au programme appelant (on peut écrire y = carre(3)), et print, qui se contente d'afficher : une fonction qui ferait print(x**2) afficherait 9 mais y = carre(3) donnerait encore None.