dans cette leçon, vous allez apprendre à répéter des instructions avec les boucles for et while, à parcourir des séquences, à utiliser des compteurs, et à arrêter ou sauter des itérations.
objectifs
- utiliser
forpour parcourir des séquences et itérables - utiliser
whilepour répéter jusqu’à ce qu’une condition soit fausse - comprendre
break,continueet l’optionelsesur les boucles - éviter les boucles infinies
- appliquer de bonnes pratiques de parcours
for : parcours direct
en python, for parcourt directement les éléments d’un itérable (liste, chaîne, set, dict…).
for fruit in ["pomme", "banane", "cerise"]:
print(fruit)
sur une chaîne :
for ch in "abc":
print(ch)
sur un dictionnaire :
d = {"a": 1, "b": 2}
for key, value in d.items():
print(key, value)
while : boucle conditionnelle
exécute tant que la condition est vraie.
n = 3
while n > 0:
print(n)
n -= 1
print("décollage")
⚠ risque de boucle infinie si la condition reste vraie pour toujours :
while True:
cmd = input("> ")
if cmd == "quit":
break
break, continue, else
break: stoppe la boucle immédiatementcontinue: passe à l’itération suivanteelse: exécuté si la boucle termine sans break
# rechercher un élément
target = 7
for n in [1, 3, 7, 9]:
if n == target:
print("trouvé")
break
else:
print("absent")
# filtrer pairs
for n in range(6):
if n % 2:
continue
print(n)
parcours avec index
range pour indices, enumerate pour index + valeur.
fruits = ["pomme", "banane", "cerise"]
for i in range(len(fruits)):
print(i, fruits[i])
for i, fruit in enumerate(fruits, start=1):
print(i, fruit)
imbrication de boucles
for x in range(3):
for y in range(2):
print(x, y)
bonnes pratiques
- préférez
for element in iterableplutôt quefor i in range(len(...)) - utilisez
enumeratepour index + valeur - attention aux modifications d’une liste pendant l’itération (préférez créer une nouvelle liste)
- pour répéter un nombre fixe de fois,
for _ in range(n):
mini exemples exécutables
# table de multiplication
for i in range(1, 4):
for j in range(1, 4):
print(f"{i*j:2}", end=" ")
print()
# compte à rebours
import time
for n in range(3, 0, -1):
print(n)
time.sleep(1)
print("go !")
# accumulation
total = 0
nums = [1, 2, 3]
for n in nums:
total += n
print(total)
# lecture ligne par ligne d'un fichier
from pathlib import Path
for line in Path("data.txt").read_text(encoding="utf-8").splitlines():
print(line)
pièges courants
- boucle infinie avec
while→ vérifiez que la condition se mettra àFalse - oublier
breakdans une boucle de recherche → leelses’exécutera - confusion
for i in iterable(valeurs) vsfor i in range(...)(indices) - oublier
:aprèsforouwhile
exercices
-
somme pairs
sum_even(nums): somme des nombres pairs d’une liste. -
filtrage
filter_short(words, max_len): retourne les mots dont la longueur est ≤ max_len. -
recherche prime écrire une boucle qui trouve le premier nombre premier > 1000.
-
boucle sécurisée lire des entrées utilisateur jusqu’à
stop, ignorer les entrées vides, afficher les valides. -
multiplication croisée imprimer toutes les paires
(x, y)pour x ∈ {1,2,3} et y ∈ {a,b}.