Python - Boucles Imbriquées

Bonjour, aspirants programmeurs !aujourd'hui, nous allons plonger dans le monde fascinant des boucles imbriquées en Python. En tant que votre enseignant de informatique de quartier, je suis ravi de vous guider à travers ce voyage. Croisez les doigts, à la fin de cette leçon, vous serez en mesure de boucler comme un pro !

Python - Nested Loops

Qu'est-ce qu'une Boucle Imbriquée ?

Avant de plonger dans les profondeurs, commençons par les bases. Imaginez que vous organisez votre placard. Vous traversez chaque étagère (c'est une boucle), et pour chaque étagère, voustriez tous les articles qu'elle contient (c'est une autre boucle à l'intérieur de la première). C'est essentiellement ce qu'ellesont les boucles imbriquées en programmation - des boucles à l'intérieur d'autres boucles !

Boucle for Imbriquée en Python

Commençons par la boucle for, qui est comme un vieil ami fiable dans le monde Python.

Structure de Base

Voici la structure générale d'une boucle for imbriquée :

for variable_extérieure in séquence_extérieure:
# Corps de la boucle extérieure
for variable_intérieure in séquence_intérieure:
# Corps de la boucle intérieure

Exemple Simple : Table de Multiplication

Créons une simple table de multiplication pour mieux comprendre cela :

for i in range(1, 6):
for j in range(1, 6):
print(f"{i} x {j} = {i*j}", end="\t")
print()  # Passer à la ligne suivante après chaque rangée

Ce code produira :

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

Analysons cela :

  1. La boucle extérieure (for i in range(1, 6)) s'exécute 5 fois, représentant les lignes.
  2. Pour chaque itération de la boucle extérieure, la boucle intérieure (for j in range(1, 6)) s'exécute 5 fois, représentant les colonnes.
  3. Nous imprimons chaque résultat de multiplication, en utilisant end="\t" pour ajouter une tabulation au lieu d'un saut de ligne.
  4. Après chaque ligne (itération de la boucle extérieure), nous imprimons une ligne vide pour passer à la ligne suivante.

Exemple du Monde Réel : Arrangement des Places

Imaginez que vous êtes un enseignant (comme moi !) en train d'arranger les places pour une classe. Créons un plan de sièges :

étudiants = ["Alice", "Bob", "Charlie", "David", "Eve"]
rangées = 3
places_par_rangée = 2

numéro_de_place = 0
for rangée in range(1, rangées + 1):
print(f"Rangée {rangée} :")
for place in range(1, places_par_rangée + 1):
if numéro_de_place < len(étudiants):
print(f"  Place {place} : {étudiants[numéro_de_place]}")
numéro_de_place += 1
else:
print(f"  Place {place} : Vide")
print()  # Ligne vide entre les rangées

Ce qui donnera :

Rangée 1 :
Place 1 : Alice
Place 2 : Bob

Rangée 2 :
Place 1 : Charlie
Place 2 : David

Rangée 3 :
Place 1 : Eve
Place 2 : Vide

Dans cet exemple :

  1. La boucle extérieure itère à travers chaque rangée.
  2. La boucle intérieure affecte des étudiants aux places de chaque rangée.
  3. Nous utilisons une variable numéro_de_place pour suivre quel étudiant nous affectons ensuite.
  4. Si nous manquons d'étudiants, nous marquons les places restantes comme "Vide".

Boucle while Imbriquée en Python

Maintenant, rencontrons le cousin de la boucle while - la boucle while imbriquée. C'est comme un gardien vigilant qui vérifieconstamment une condition.

Structure de Base

Voici à quoi ressemble typiquement une boucle while imbriquée :

while condition_extérieure:
# Corps de la boucle extérieure
while condition_intérieure:
# Corps de la boucle intérieure

Exemple : Pyramide de Nombres

Créons une pyramide de nombres pour voir les boucles while imbriquées en action :

rangée = 1
while rangée <= 5:
colonne = 1
while colonne <= rangée:
print(colonne, end=" ")
colonne += 1
print()  # Passer à la ligne suivante
rangée += 1

Ce qui donnera :

1
1 2
1 2 3
1 2 3 4
1 2 3 4 5

Analysons cela :

  1. La boucle while extérieure contrôle le nombre de lignes (1 à 5).
  2. Pour chaque ligne, la boucle while intérieure imprime des nombres de 1 au nombre de la ligne actuelle.
  3. Nous incrémentons colonne à l'intérieur de la boucle intérieure et rangée à l'intérieur de la boucle extérieure.

Exemple du Monde Réel : Vérification de l'Inventaire

Imaginez que vous gérez un petit magasin. Vous devez vérifier votre inventaire régulièrement. Simulons cela avec desboucles while imbriquées :

inventaire = {
"pommes": 50,
"bananes": 30,
"oranges": 40
}

jours = 1
while jours <= 3:  # Vérification pour 3 jours
print(f"Jour {jours} Vérification de l'Inventaire :")
for fruit, quantité in inventaire.items():
while quantité > 0:
print(f"Vérification de {fruit}...")
quantité -= 10  # Simuler la vente de 10 unités à chaque vérification
if quantité <= 20:
print(f"Alerte de stock faible pour {fruit} ! Il ne reste plus que {quantité}.")
break  # Arrêter de vérifier ce fruit si le stock est faible
inventaire[fruit] = quantité  # Mettre à jour l'inventaire
print(f"Fin du Jour {jours} Inventaire : {inventaire}\n")
jours += 1

Ce qui donnera quelque chose comme :

Jour 1 Vérification de l'Inventaire :
Vérification de pommes...
Vérification de pommes...
Vérification de pommes...
Alerte de stock faible pour pommes ! Il ne reste plus que 20.
Vérification de bananes...
Alerte de stock faible pour bananes ! Il ne reste plus que 20.
Vérification de oranges...
Vérification de oranges...
Alerte de stock faible pour oranges ! Il ne reste plus que 20.
Fin du Jour 1 Inventaire : {'pommes': 20, 'bananes': 20, 'oranges': 20}

Jour 2 Vérification de l'Inventaire :
Vérification de pommes...
Alerte de stock faible pour pommes ! Il ne reste plus que 10.
Vérification de bananes...
Alerte de stock faible pour bananes ! Il ne reste plus que 10.
Vérification de oranges...
Alerte de stock faible pour oranges ! Il ne reste plus que 10.
Fin du Jour 2 Inventaire : {'pommes': 10, 'bananes': 10, 'oranges': 10}

Jour 3 Vérification de l'Inventaire :
Vérification de pommes...
Alerte de stock faible pour pommes ! Il ne reste plus que 0.
Vérification de bananes...
Alerte de stock faible pour bananes ! Il ne reste plus que 0.
Vérification de oranges...
Alerte de stock faible pour oranges ! Il ne reste plus que 0.
Fin du Jour 3 Inventaire : {'pommes': 0, 'bananes': 0, 'oranges': 0}

Dans cet exemple :

  1. La boucle while extérieure simule la vérification de l'inventaire pour 3 jours.
  2. Nous utilisons une boucle for pour itérer à travers chaque fruit de l'inventaire.
  3. La boucle while intérieure simule la vérification et la vente de chaque fruit jusqu'à ce que le stock soit faible ou épuisé.
  4. Nous utilisons break pour arrêter de vérifier un fruit si sa quantité tombe à 20 ou en dessous.

Conclusion

Félicitations ! Vous venez de maîtriser l'art des boucles imbriquées en Python. Souvenez-vous, les boucles imbriquées sont des outils puissants, mais utilisez-les avec sagesse. Elles peuvent rendre votre code plus lent si elles ne sont pas utilisées efficacement.

Comme pour tous les concepts de programmation, la pratique fait le maître. Essayez de créer vos propres scénarios de boucles imbriquées - peut-être une configuration de plateau d'échecs, ou un calendrier scolaire hebdomadaire. Les possibilités sont infinies !

Continuez à coder, à apprendre, et surtout, amusez-vous bien ! Jusqu'à la prochaine fois, c'est votre enseignant de informatique de quartier qui vous dit aurevoir. Bon bouclage !

Credits: Image by storyset