Aller au contenu principal
3e

Python : boucles et fonctions — Exercices d'application

1. La boucle for

↩ Revoir le cours

Exercice 1 — ⭐

  1. Combien de fois le message "Salut" est-il affiché par ce programme ?
    for i in range(7):
        print("Salut")
  2. Quelles sont les valeurs successives prises par i dans for i in range(4): ?
  3. Écris un programme qui affiche les nombres de 11 à 1010 (inclus), un par ligne, à l’aide d’une boucle for et de range.
Voir le corrigé
  1. 77 fois, car range(7) produit 77 valeurs.
  2. i prend successivement les valeurs 0,1,2,30, 1, 2, 3 (quatre valeurs, de 00 à 33).
  3. for i in range(1, 11):
        print(i)
    (range(1, 11) produit les valeurs de 11 à 1010, le nombre 1111 n’étant jamais atteint.)

2. La boucle while

↩ Revoir le cours

Exercice 2 — ⭐⭐

On donne le programme suivant :

compteur = 0
while compteur < 5:
    print(compteur)
    compteur = compteur + 1
  1. Quelles valeurs successives ce programme affiche-t-il ?
  2. Pourquoi la boucle s’arrête-t-elle après avoir affiché 44 ?
  3. Que se passerait-il si on oubliait la ligne compteur = compteur + 1 ?
Voir le corrigé
  1. Il affiche 0,1,2,3,40, 1, 2, 3, 4 (cinq valeurs).
  2. Après avoir affiché 44, compteur devient 55 : la condition compteur < 5 devient fausse (55 n’est pas strictement inférieur à 55), donc la boucle s’arrête.
  3. Sans cette ligne, compteur resterait toujours égal à 00 : la condition compteur < 5 resterait toujours vraie, et la boucle tournerait indéfiniment (boucle infinie), affichant 0 sans jamais s’arrêter.

3. Écrire une fonction

↩ Revoir le cours

Exercice 3 — ⭐⭐

  1. Écris une fonction dire_au_revoir (sans paramètre) qui affiche "Au revoir !".
  2. Appelle cette fonction trois fois dans ton programme.
  3. Quelle est la différence entre définir une fonction et l’appeler ?
Voir le corrigé
  1. def dire_au_revoir():
        print("Au revoir !")
  2. dire_au_revoir()
    dire_au_revoir()
    dire_au_revoir()
  3. Définir une fonction (avec def) décrit ce qu’elle fait, sans encore l’exécuter. L’appeler (en écrivant son nom suivi de parenthèses) exécute réellement les instructions qu’elle contient.

4. Paramètres et valeur de retour

↩ Revoir le cours

Exercice 4 — ⭐⭐⭐

  1. Écris une fonction double(nombre) qui reçoit un paramètre nombre et renvoie le double de ce nombre (utilise return).
  2. Utilise cette fonction pour calculer et afficher le double de 1717.
  3. Quelle est la différence entre print(...) à l’intérieur d’une fonction et return ... ?
Voir le corrigé
  1. def double(nombre):
        return nombre * 2
  2. resultat = double(17)
    print(resultat)
    (Affiche 34.)
  3. print(...) affiche une valeur à l’écran, mais le programme qui a appelé la fonction ne peut pas la récupérer pour un calcul ultérieur. return ... renvoie la valeur au programme appelant, qui peut alors la stocker dans une variable ou la réutiliser, sans qu’elle soit forcément affichée.

5. Combiner boucles et fonctions

↩ Revoir le cours

Exercice 5 — ⭐⭐⭐⭐

  1. Écris une fonction produit_jusqua(n) qui calcule et renvoie le produit des entiers de 11 à nn (par exemple, produit_jusqua(4) doit renvoyer 1×2×3×4=241 \times 2 \times 3 \times 4 = 24), à l’aide d’une boucle for.
  2. Teste ta fonction en affichant produit_jusqua(5). Vérifie le résultat par un calcul à la main.
  3. Pourquoi faut-il initialiser la variable qui accumule le produit à 11, et non à 00, contrairement à une somme ?
Voir le corrigé
  1. def produit_jusqua(n):
        total = 1
        for i in range(1, n + 1):
            total = total * i
        return total
  2. print(produit_jusqua(5))
    Affiche 120, car 1×2×3×4×5=1201 \times 2 \times 3 \times 4 \times 5 = 120, ce que l’on peut vérifier : 1×2=21 \times 2 = 2, 2×3=62 \times 3 = 6, 6×4=246 \times 4 = 24, 24×5=12024 \times 5 = 120.
  3. Si total valait 00 au départ, alors total * i vaudrait toujours 00 à chaque tour de boucle (multiplier par 00 donne toujours 00), et le résultat final serait 00 au lieu du produit attendu. En partant de 11 (l’élément neutre de la multiplication), les multiplications successives donnent bien le produit recherché.