La boucle for

Définition, méthode pas à pas, exemple corrigé et exercice type contrôle de Seconde.

Maths Seconde Lecture : 5 min Programme officiel 2019

Une boucle for est une structure de contrôle qui permet de répéter un bloc d'instructions un nombre de fois déterminé. Elle est utilisée pour parcourir une séquence (comme une liste de nombres, une chaîne de caractères) ou pour exécuter des instructions un nombre fixe de fois. En Python, la fonction range() est souvent utilisée avec les boucles for pour générer des séquences de nombres entiers.

Bon réflexe : Toujours vérifier les bornes de range() et l'indentation de ton code pour éviter les erreurs logiques ou de syntaxe.
1

Comprendre la syntaxe

La syntaxe générale d'une boucle for en Python est la suivante :

for variable in sequence:
    # bloc d'instructions à répéter
    instruction_1
    instruction_2
La variable prendra successivement chaque valeur de la sequence. Le bloc d'instructions doit être indenté (généralement 4 espaces).

2

Utiliser range()

La fonction range() est très utile pour générer des séquences de nombres entiers :

  • range(n) : génère les entiers de $0$ à $n-1$. (Ex: range(5) donne $0, 1, 2, 3, 4$)
  • range(debut, fin) : génère les entiers de debut à fin-1. (Ex: range(2, 6) donne $2, 3, 4, 5$)
  • range(debut, fin, pas) : génère les entiers de debut à fin-1 avec un certain pas. (Ex: range(1, 10, 2) donne $1, 3, 5, 7, 9$)

3

Définir la séquence

Choisissez la séquence à parcourir. Cela peut être une liste explicite (ex: [10, 20, 30]), une chaîne de caractères (ex: 'Python'), ou le plus souvent, une séquence générée par range().

4

Écrire le bloc d'instructions

Définissez les instructions qui doivent être répétées à chaque itération de la boucle. Ces instructions doivent être indentées. La variable de la boucle peut être utilisée à l'intérieur de ce bloc.

Écrire un programme Python qui calcule la somme des entiers de $1$ à $5$ inclus et affiche le résultat.
1
Initialiser la variable de somme
Avant la boucle, il faut créer une variable pour stocker la somme et l'initialiser à $0$.
somme = 0
2
Définir la boucle for
Nous voulons sommer les nombres de $1$ à $5$. La fonction range(1, 6) générera les nombres $1, 2, 3, 4, 5$.
for i in range(1, 6):
3
Ajouter l'instruction à répéter
À chaque itération, nous ajoutons la valeur actuelle de i à somme. Cette instruction doit être indentée.
    somme = somme + i
4
Afficher le résultat
Après la boucle (donc non indenté), nous affichons la valeur finale de somme.
print("La somme est :", somme)
Le programme complet est :
somme = 0
for i in range(1, 6):
    somme = somme + i
print("La somme est :", somme)
L'exécution de ce code affichera :
La somme est : 15
Car $1+2+3+4+5 = 15$.
  1. Erreur d'intervalle avec range() : Oublier que range(n) va de $0$ à $n-1$ et que range(debut, fin) va de debut à fin-1. Le dernier nombre spécifié n'est jamais inclus.
  2. Problèmes d'indentation : Ne pas indenter correctement le bloc d'instructions de la boucle for, ou indenter des instructions qui ne devraient pas faire partie de la boucle. Python utilise l'indentation pour définir les blocs de code.
  3. Variable non initialisée : Utiliser une variable (comme somme ou compteur) à l'intérieur de la boucle sans l'avoir initialisée avant la boucle. Cela peut entraîner une erreur ou un résultat incorrect.
  4. Modifier la variable de boucle : Tenter de modifier la variable i (ou autre) à l'intérieur de la boucle for. Bien que Python ne l'interdise pas toujours, c'est une mauvaise pratique et cela ne changera pas le déroulement des itérations de la boucle.

On souhaite écrire un programme Python qui affiche les carrés des nombres pairs entre $2$ et $10$ inclus.

  1. Quelle séquence de nombres la fonction range() doit-elle générer pour obtenir les nombres $2, 4, 6, 8, 10$ ?
  2. Écrire le programme Python complet utilisant une boucle for pour afficher ces carrés.
  1. Pour obtenir les nombres $2, 4, 6, 8, 10$, nous devons commencer à $2$, aller jusqu'à $10$ inclus (donc la fin de range() sera $11$), et utiliser un pas de $2$.

    La fonction range() à utiliser est donc : range(2, 11, 2).

  2. Le programme Python complet est :

    for nombre in range(2, 11, 2):
        carre = nombre * nombre
        print("Le carré de", nombre, "est", carre)

    Explication :

    • La boucle for nombre in range(2, 11, 2): va successivement attribuer à la variable nombre les valeurs $2, 4, 6, 8, 10$.
    • À chaque itération, carre = nombre * nombre calcule le carré du nombre actuel.
    • print("Le carré de", nombre, "est", carre) affiche le résultat pour chaque nombre.

    L'exécution de ce code affichera :

    Le carré de 2 est 4
    Le carré de 4 est 16
    Le carré de 6 est 36
    Le carré de 8 est 64
    Le carré de 10 est 100

Questions fréquentes

Quelle est la différence entre une boucle for et une boucle while ?
Une boucle for est utilisée quand on connaît à l'avance le nombre d'itérations (par exemple, parcourir une liste ou un range()). Une boucle while est utilisée quand le nombre d'itérations est inconnu et dépend d'une condition qui doit devenir fausse pour arrêter la boucle. En Seconde, on utilise principalement for pour les répétitions connues.
Peut-on utiliser une boucle for pour parcourir une chaîne de caractères ?
Oui, absolument ! Une chaîne de caractères est une séquence. Par exemple :
mot = "Python"
for lettre in mot:
    print(lettre)
Affichera chaque lettre du mot sur une nouvelle ligne.
Que se passe-t-il si la séquence est vide ?
Si la séquence est vide (par exemple, range(5, 2) ou une liste vide []), le bloc d'instructions de la boucle for ne sera jamais exécuté. Le programme passera directement à l'instruction suivant la boucle.
Est-il possible de sortir d'une boucle for avant la fin de la séquence ?
Oui, on peut utiliser l'instruction break pour sortir immédiatement de la boucle. Par exemple, pour arrêter de chercher un élément dès qu'il est trouvé :
nombres = [1, 5, 8, 12, 3]
for n in nombres:
    if n > 10:
        print("Premier nombre supérieur à 10 trouvé :", n)
        break

Le passage en Seconde est difficile ?

Adil accompagne les élèves de Seconde, à domicile dans le Val d'Oise ou en ligne. Un seul prof, du premier cours jusqu'au Bac.

06 20 13 00 82 Cours de maths en Seconde →