Boucles et Itérations en Python
Introduction aux Boucles
Les boucles permettent de répéter l'exécution d'un bloc de code plusieurs fois. Python propose deux types de boucles principales : for
et while
.
La Boucle for
La boucle for
est utilisée pour itérer sur une séquence (liste, tuple, chaîne de caractères, etc.) ou tout autre objet itérable.
Syntaxe de base :
for élément in séquence:
# bloc de code à répéter
Exemple avec une liste :
fruits = ["pomme", "banane", "orange"]
for fruit in fruits:
print(fruit)
# Sortie :
# pomme
# banane
# orange
Exemple avec une chaîne de caractères :
mot = "Python"
for lettre in mot:
print(lettre)
# Sortie :
# P
# y
# t
# h
# o
# n
La Fonction range()
La fonction range()
génère une séquence de nombres, très utile avec les boucles for
.
Syntaxes de range() :
range(stop) # de 0 à stop-1
range(start, stop) # de start à stop-1
range(start, stop, step) # de start à stop-1 avec pas de step
Exemples pratiques :
# De 0 à 4
for i in range(5):
print(i)
# De 2 à 6
for i in range(2, 7):
print(i)
# Compter à rebours
for i in range(5, 0, -1):
print(i)
La Boucle while
La boucle while
exécute un bloc de code tant qu'une condition est vraie.
Syntaxe de base :
while condition:
# bloc de code à répéter
Exemples :
# Compter de 1 à 5
compteur = 1
while compteur <= 5:
print(compteur)
compteur += 1
# Sortie : 1 2 3 4 5
# Saisie utilisateur avec validation
nombre = 0
while nombre < 1 or nombre > 10:
nombre = int(input("Entrez un nombre entre 1 et 10 : "))
print(f"Vous avez choisi : {nombre}")
Instructions de Contrôle des Boucles
break
- Interrompre une boucle
L'instruction break
permet de sortir immédiatement d'une boucle.
for i in range(10):
if i == 5:
break
print(i)
# Sortie : 0 1 2 3 4
continue
- Passer à l'itération suivante
L'instruction continue
saute le reste du code de l'itération courante et passe à la suivante.
for i in range(10):
if i % 2 == 0: # si i est pair
continue
print(i)
# Sortie : 1 3 5 7 9 (nombres impairs seulement)
else
avec les boucles
Les boucles peuvent avoir une clause else
qui s'exécute quand la boucle se termine normalement (sans break
).
for i in range(5):
print(i)
else:
print("Boucle terminée normalement")
# Sortie : 0 1 2 3 4 Boucle terminée normalement
for i in range(5):
if i == 3:
break
print(i)
else:
print("Boucle terminée normalement")
# Sortie : 0 1 2 (le else n'est pas exécuté à cause du break)
Boucles Imbriquées
Vous pouvez mettre une boucle à l'intérieur d'une autre boucle.
# Table de multiplication
for i in range(1, 4):
for j in range(1, 4):
print(f"{i} x {j} = {i * j}")
print() # ligne vide entre les tables
# Sortie :
# 1 x 1 = 1
# 1 x 2 = 2
# 1 x 3 = 3
#
# 2 x 1 = 2
# ...
Comparaison entre for
et while
Boucle for |
Boucle while |
Utilisée quand on connaît le nombre d'itérations |
Utilisée quand on ne connaît pas le nombre d'itérations |
Itère sur une séquence |
Exécute tant qu'une condition est vraie |
Gère automatiquement le compteur |
Nécessite de gérer manuellement la condition |
Moins de risque de boucle infinie |
Risque de boucle infinie si la condition ne devient jamais fausse |
Exemples Pratiques Complets
Exemple 1 : Calculateur de Factorielle
# Calcul de factorielle avec for
nombre = 5
factorielle = 1
for i in range(1, nombre + 1):
factorielle *= i
print(f"La factorielle de {nombre} est {factorielle}")
# Avec while
nombre = 5
factorielle = 1
compteur = 1
while compteur <= nombre:
factorielle *= compteur
compteur += 1
print(f"La factorielle de {nombre} est {factorielle}")
Exemple 2 : Jeu de Devinette
import random
nombre_secret = random.randint(1, 100)
essais = 0
trouve = False
print("Devinez le nombre entre 1 et 100 !")
while not trouve:
essai = int(input("Votre proposition : "))
essais += 1
if essai == nombre_secret:
trouve = True
print(f"Bravo ! Vous avez trouvé en {essais} essais.")
elif essai < nombre_secret:
print("Trop petit !")
else:
print("Trop grand !")
Exemple 3 : Analyse de Liste
nombres = [12, 45, 23, 67, 34, 89, 56]
# Trouver le maximum
maximum = nombres[0]
for nombre in nombres:
if nombre > maximum:
maximum = nombre
print(f"Le plus grand nombre est : {maximum}")
# Compter les nombres pairs
compteur_pairs = 0
for nombre in nombres:
if nombre % 2 == 0:
compteur_pairs += 1
print(f"Il y a {compteur_pairs} nombres pairs")
# Calculer la moyenne
somme = 0
for nombre in nombres:
somme += nombre
moyenne = somme / len(nombres)
print(f"La moyenne est : {moyenne:.2f}")
Exercices Pratiques
Exercice 1 : Triangle d'Étoiles
hauteur = 5
for i in range(1, hauteur + 1):
print("*" * i)
# Sortie :
# *
# **
# ***
# ****
# *****
Exercice 2 : Nombre Premier
nombre = 17
est_premier = True
if nombre > 1:
for i in range(2, int(nombre**0.5) + 1):
if nombre % i == 0:
est_premier = False
break
else:
est_premier = False
if est_premier:
print(f"{nombre} est un nombre premier")
else:
print(f"{nombre} n'est pas un nombre premier")
Exercice 3 : Fibonacci
n = 10
a, b = 0, 1
print("Suite de Fibonacci :")
for i in range(n):
print(a, end=" ")
a, b = b, a + b
# Sortie : 0 1 1 2 3 5 8 13 21 34
Bonnes Pratiques
- Utilisez
for
quand vous connaissez le nombre d'itérations
- Utilisez
while
quand vous dépendez d'une condition
- Évitez les boucles infinies en vous assurant que la condition devienne fausse
- Utilisez
break
et continue
avec parcimonie
- Choisissez des noms de variables significatifs pour les compteurs
Attention aux boucles infinies : Avec while
, assurez-vous que la condition devienne éventuellement fausse, sinon la boucle ne s'arrêtera jamais !
Astuce : Utilisez enumerate()
avec les boucles for
pour obtenir à la fois l'index et la valeur lors de l'itération sur une séquence.
Résumé
for
itère sur des séquences avec range()
, listes, chaînes, etc.
while
répète tant qu'une condition est vraie
break
sort immédiatement d'une boucle
continue
passe à l'itération suivante
else
s'exécute quand une boucle se termine normalement
- Les boucles imbriquées permettent des motifs complexes
range()
génère des séquences de nombres pour les boucles