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} 🍎")
🔍
fruitest 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
| Appel | Resultat | Description |
|---|---|---|
range(5) | 0, 1, 2, 3, 4 | 5 elements |
range(1, 6) | 1, 2, 3, 4, 5 | De 1 a 5 |
range(0, 10, 3) | 0, 3, 6, 9 | Pas de 3 |
range(5, 0, -1) | 5, 4, 3, 2, 1 | Compte 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/16La 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.