0 XP
?
Python : de zéro à la maîtrise/Boucles et itérations
Débutant45 min30 XP

Objectifs de cette leçon

  • Utiliser les boucles for et while
  • Comprendre range() et l'itération
  • Utiliser break et continue

Boucles et iterations 🔄

Pourquoi des boucles ? 🤔

Imagine que tu doives afficher "Bonjour" 100 fois. Sans boucle, il faudrait ecrire print("Bonjour") cent fois. Avec une boucle, 3 lignes suffisent.

💡 Les boucles sont le coeur de la programmation. Elles permettent de repeter une action sans reecrire le code.


La boucle for 🔢

La boucle for parcourt une serie d'elements : une liste, une chaine, un range, etc.

Parcourir une liste

fruits = ["pomme", "banane", "cerise", "date"]

for fruit in fruits:
    print(f"J'aime la {fruit} 🍎")

🔍 fruit est une variable temporaire qui prend chaque valeur de la liste, un tour a la fois.

La fonction range()

# range(stop) : de 0 a stop-1
for i in range(5):
    print(i)           # 0, 1, 2, 3, 4

# range(start, stop) : de start a stop-1
for i in range(2, 7):
    print(i)           # 2, 3, 4, 5, 6

# range(start, stop, step) : avec un pas
for i in range(0, 10, 2):
    print(i)           # 0, 2, 4, 6, 8

# Compter a rebours
for i in range(10, 0, -1):
    print(i)           # 10, 9, 8, ..., 1
AppelResultatDescription
range(5)0, 1, 2, 3, 45 elements
range(1, 6)1, 2, 3, 4, 5De 1 a 5
range(0, 10, 3)0, 3, 6, 9Pas de 3
range(5, 0, -1)5, 4, 3, 2, 1Compte a rebours

Parcourir une chaine

for lettre in "Python":
    print(lettre, end=" ")
# P y t h o n

Parcourir un dictionnaire

personne = {"nom": "Alice", "age": 25, "ville": "Paris"}

for cle in personne:
    print(f"{cle} : {personne[cle]}")

enumerate() — index et valeur 🏷️

fruits = ["pomme", "banane", "cerise"]

# Sans enumerate
for i in range(len(fruits)):
    print(f"{i+1}. {fruits[i]}")

# Avec enumerate (plus elegant)
for index, fruit in enumerate(fruits, start=1):
    print(f"{index}. {fruit}")

Resultat :

1. pomme
2. banane
3. cerise

La boucle while

La boucle while repete un bloc tant qu'une condition est vraie.

compteur = 0

while compteur < 5:
    print(f"Tour n°{compteur}")
    compteur += 1  # NE PAS OUBLIER !

print("Termine !")

⚠️ ATTENTION : Si tu oublies compteur += 1, la boucle tourne a l'infini !

Exemple interactif

import random

mystere = random.randint(1, 100)
tentative = 0
essais = 0

while tentative != mystere:
    tentative = int(input("Devinez le nombre (1-100) : "))
    essais += 1
    if tentative < mystere:
        print("Trop petit ! ⬆️")
    elif tentative > mystere:
        print("Trop grand ! ⬇️")

print(f"🎉 Bravo ! Trouvé en {essais} essais !")

break et continue 🛑

break — Sortir de la boucle

nombres = [3, 7, 11, 42, 8, 15]
cible = 42

for n in nombres:
    if n == cible:
        print(f"Trouvé : {n} ! 🎉")
        break
    print(f"Verifie {n}... pas trouve")
else:
    print("Pas trouve 😢")

continue — Passer au tour suivant

# Afficher uniquement les nombres impairs
for i in range(10):
    if i % 2 == 0:
        continue  # Sauter les nombres pairs
    print(i, end=" ")
# 1 3 5 7 9

Le else des boucles 🔑

# Le bloc else s'execute SI la boucle se termine normalement (sans break)
nombres = [1, 3, 5, 7]
recherche = 4

for n in nombres:
    if n == troubleshooting:
        print("Trouve !")
        break
else:
    print(f"{recherche} n'est pas dans la liste")

Boucles imbriquees 🪆

# Table de multiplication
for i in range(1, 6):
    for j in range(1, 6):
        print(f"{i*j:3d}", end="")
    print()

Resultat :

  1  2  3  4  5
  2  4  6  8 10
  3  6  9 12 15
  4  8 12 16 20
  5 10 15 20 25

Comprehensions de listes ✨

# Methode classique
carres = []
for x in range(10):
    carres.append(x ** 2)

# Comprehension de liste (en une ligne !)
carres = [x ** 2 for x in range(10)]
print(carres)  # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

# Avec condition
impairs = [x for x in range(20) if x % 2 != 0]
print(impairs)  # [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]

# Transformer une liste de chaines
noms = ["alice", "bob", "charlie"]
majuscules = [nom.upper() for nom in noms]
print(majuscules)  # ['ALICE', 'BOB', 'CHARLIE']

Patterns de boucles utiles 🧩

Sommer des elements

notes = [15, 12, 18, 10, 14]
somme = 0
for note in notes:
    somme += note
moyenne = somme / len(notes)
print(f"Moyenne : {moyenne:.1f}")  # 13.8

Trouver le maximum

nombres = [23, 67, 12, 89, 45]
max_val = nombres[0]
for n in nombres:
    if n > max_val:
        max_val = n
print(f"Maximum : {max_val}")  # 89

Compter des occurrences

lettres = list("banana")
compteur = {}
for lettre in lettres:
    if lettre in compteur:
        compteur[lettre] += 1
    else:
        compteur[lettre] = 1
print(compteur)  # {'b': 1, 'a': 3, 'n': 2}

Flux d'execution 🔄


Pieges a eviter ⚠️

# 1. Boucle infinie
while True:
    print("Je ne m'arrete jamais !")  # mort

# 2. Modifier une liste pendant qu'on la parcourt
fruits = ["pomme", "banane", "cerise"]
for fruit in fruits:
    if fruit == "banane":
        fruits.remove(fruit)  # Comportement imprevisible !

# 3. Confondre range(5) -> 0,1,2,3,4 (pas jusqu'a 5 inclus)

Exercice pour toi 🎯

# Exercice 1 : Factorielle
n = 5
resultat = 1
for i in range(1, n + 1):
    resultat *= i
print(f"{n}! = {resultat}")  # 120

# Exercice 2 : Compte a rebours avec while
compteur = 10
while compteur > 0:
    print(compteur, end="... ")
    compteur -= 1
print("🚀 Decollage !")

# Exercice 3 : Table de multiplication
n = int(input("Table de multiplication de ? "))
for i in range(1, 11):
    print(f"{n} x {i} = {n * i}")

💡 Astuce : Avant d'ecrire une boucle, pose-toi la question : "est-ce que je sais combien de fois je vais repeter ?" Si oui -> for. Si non -> while.

⚡ Simulateur — Boucles

Étape 1/16
📝 Pseudo-code
1for i in range(5):
2 print(f"Tour {i}")
3
4compteur = 0
5while compteur < 3:
6 print(compteur)
7 compteur += 1
⚙️ Exécution
📦 Mémoire
Aucune variable
🔀 Flux d'exécution
for range(5) [0/5]
3
Début de la boucle for

La boucle for itère sur range(5), ce qui génère les valeurs 0, 1, 2, 3, 4. La variable i prend chaque valeur à tour de rôle.