Open Source Your Knowledge, Become a Contributor
Technology knowledge has to be shared and made accessible for free. Join the movement.
Cours : Les boucles `for`
Présentation des boucles for
La boucle for
énumère les éléments d'un ensemble et pour chaque élément, répète toujours le même code en fonction de cet élément. Donnons un exemple :
for objet in liste_courses :
trouver(objet)
mettre_dans_le_chariot(objet)
aller_payer()
Détaillons un peu. Pour chaque objet dans ma liste de courses, je fais toujours la même chose : je le trouve puis je le mets dans le chariot. C'est ça que fait ma boucle for
. Quand il n'y a plus d'objet dans ma liste de course, je vais payer.
Attention au fait que, comme pour le if... else...
, il ne faut pas oublier les ":" en fin de ligne et, de plus, ce qui doit être fait en boucle doit être indenté. Et le aller_payer
n'est pas indenté car je ne paye qu'à la fin. S'il était indenté, cela signifierait que pour chaque objet j'irais payer avant de passer à l'objet suivant...
Passons à des exemples plus informatiques.
Nous allons nous intéresser principalement à l'énumération de nombres car c'est de loin la plus utile au début. Pour créer une liste de nombres, on utilise la fonction range
.
range(n)
: crée une liste de n nombres allant de 0 à n-1.
Et oui en informatique, il va falloir prendre l'habitude de toujours commencer à 0 et du coup finir à n-1 si on veut n nombres en tout.range(n1,n2)
: crée une liste de nombres allant de n1 à n2-1.range(n1,n2,pas)
: crée une liste de nombres allant de n1 à n2-1 en sautant de pas en pas.
Par exemple :
range(4)
est la suite de nombres 0 1 2 3range(3,6)
est la suite de nombres 3 4 5range(1,9,3)
est la suite de nombres 1 4 7 (de 3 en 3 en partant de 1)range(3,0,-1)
est la suite 3 2 1 (un pas négatif permet de compter à l'envers ce qui est très pratique des fois)
Passons à des exemples d'utilisation. Essayez d'abord de deviner le résultat puis appuyez sur Run pour vérifier.
Détaillons cet exemple :
Pour i
allant de 0 jusqu'à 3 (c'est à dire range(4)),
je demande à chaque fois somme += i
ce qui veut dire que je rajoute à somme
la valeur i
qui vaut tour à tour 0 puis 1 puis 2 puis 3.
Finalement, j'affiche le résultat qui n'est autre que 0+1+2+3.
Boucles for
imbriquées
On peut bien sur enchainer les boucles. Imaginons que nous voulions afficher tous les couples (x,y) possibles avec x et y des entiers entre 0 et 5. Une façon de faire serait de commençer par x = 0 et énumérer tous les couples (0,y) pour y entre 0 et 5 puis faire de même pour x=1 jusqu'à x = 5. On voit bien qu'il faut faire en boucle sur x... une boucle sur y. Et comme tout ce qui se trouve dans une boucle doit être indenté, il faudra donc décaler notre deuxième for
par rapport au premier. Voici un exemple de programme pour afficher ces couples :
On peut même faire dépendre la deuxième boucle de la variable de la première (puisqu'elle est imbriquée). Par exemple si on veut afficher les couples (x,y) avec y<=x. On veut donc que y soit entre 0 et x ce qui donnerait comme code :
for caractere in texte
: Nous permet de créer une boucle en énumérant les lettres de texte. Par exemple si je veux afficher les chiffres d'un texte :12345texte="Quatre bonbons à 0,25 euro chacun coûtent un euro"for caractere in texte:if caractere in "0123456789":print(caractere)Enter to Rename, Shift+Enter to PreviewQuelques explications : La boucle
for
va prendre le premier caractère detexte
et le placer dans la variablecaractere
c'est à dire quecaractere
= 'Q'. Ensuite on teste si car fait partie des chiffres. Comme ce n'est pas le cas, et qu'il n'y a rien à faire dans ce cas, on revient à la boucle for avec la deuxième lettre cette fois et on recommence jusqu'au caractère "0" qui faire partie des chiffres donc on l'affiche etc.
QCM
Voici quelques QCM pour voir si vous avez bien compris. N'hésitez pas à relire ce qui précède si vous avez un doute.
QCM 1
for k in range(3):
print(k)
QCM 2
for k in range(1,7,2):
print(k)
QCM 3
for k in ... :
print(k)
QCM 4
for k in range(5):
print(k*k + k)
QCM 5
somme = 0
for n in range(4):
somme += n*n
print(somme)
QCM 6
somme = 0
for n in range(5):
somme += ...
print(somme)
Entrainement
Exercice 1
On a recopié ci-dessous le programme de l'exemple précédent. Modifier ce programme pour qu'il affiche la somme des entiers de 3 à 172 c'est à dire 3 + 4 + 5 + ... + 171 + 172.
Exercice 2
On a recopié de nouveau ci-dessous le programme de l'exemple précédent. Modifier ce programme pour qu'il affiche la somme des carrés des entiers de 5 à 123 c'est à dire 5² + 6² + 7² + ... + 122² + 123².
Exercice 3
En s'inspirant des programmes précédents, créez un programme qui affiche, pour chaque entier entre 0 et 100, son carré. Autrement dit, il doit afficher :
0
1
4
9
16
...
10000