Les boucles "POUR"
Une boucle "pour" sert à répéter une action. Rappelons brièvement la principale différence entre une boucle "pour" et une boucle "tant que" (dont nous donnerons la syntaxe à un autre moment) :
- Avec une boucle "pour", on connaît à l'avance le nombre de répétitions de l'action à exécuter.
- Avec une boucle "tant que", le nombre de répétitions est conditionné par l'évolution de l'état de certaines variables du programme.
Un premier exemple
La table de multiplication du 8.
Pour k allant de 1 à 10 :
afficher k*8
for k in range(1,11) :
print(k, "* 8 = ",k*8)
-
L'indentation après la ligne
for ... :est obligatoire (et automatique avec un éditeur adapté) : elle permet de délimiter la portée dufor. - a et b désignant deux entiers, range(a,b) est l'ensemble (ordonné) des entiers a, a+1, a+2, ..., b-1. C'est à dire l'ensemble des entiers k vérifiant a≤ k <b. On fera attention à l'apparente dissymétrie entre les deux bornes.
L'affichage obtenu :
1 * 8 = 8 2 * 8 = 16 3 * 8 = 24 4 * 8 = 32 5 * 8 = 40 6 * 8 = 48 7 * 8 = 56 8 * 8 = 64 9 * 8 = 72 10 * 8 = 80
Un second exemple
Calcul de la somme des premiers entiers naturels.
Calcul de la somme S=1+2+3+...+n des n premiers entiers positifs :
n=15
s=0 # initialisation de la variable s qui contiendra la somme
for j in range(1,n+1) :
s=s+j
print("La somme des entiers compris entre 1 et {} est égale à {}.".format(n,s) )
On obtient :
La somme des entiers compris entre 1 et 15 est égale à 120.
Pour bien saisir le rôle de l'indentation, écrivons dans ce dernier programme l'instruction print
en l'indentant de la même façon que l'instruction s=s+j :
n=15
s=0 # initialisation de la variable s qui contiendra la somme
for j in range(1,n+1) :
s=s+j
print("La somme des entiers compris entre 1 et {} est égale à {}.".format(n,s) )
On obtient cette fois :
La somme des entiers compris entre 1 et 15 est égale à 1. La somme des entiers compris entre 1 et 15 est égale à 3. La somme des entiers compris entre 1 et 15 est égale à 6. La somme des entiers compris entre 1 et 15 est égale à 10. La somme des entiers compris entre 1 et 15 est égale à 15. La somme des entiers compris entre 1 et 15 est égale à 21. La somme des entiers compris entre 1 et 15 est égale à 28. La somme des entiers compris entre 1 et 15 est égale à 36. La somme des entiers compris entre 1 et 15 est égale à 45. La somme des entiers compris entre 1 et 15 est égale à 55. La somme des entiers compris entre 1 et 15 est égale à 66. La somme des entiers compris entre 1 et 15 est égale à 78. La somme des entiers compris entre 1 et 15 est égale à 91. La somme des entiers compris entre 1 et 15 est égale à 105. La somme des entiers compris entre 1 et 15 est égale à 120.
Les messages obtenus lors de ce dernier affichage n'étant pas exacts, modifions notre programme
(on remplace simplement n par j dans format(n,s)) :
n=15
s=0 # initialisation de la variable s qui contiendra la somme
for j in range(1,n+1) :
s=s+j
print("La somme des entiers compris entre 1 et {} est égale à {}.".format(j,s) )
On obtient cette fois :
La somme des entiers compris entre 1 et 1 est égale à 1. La somme des entiers compris entre 1 et 2 est égale à 3. La somme des entiers compris entre 1 et 3 est égale à 6. La somme des entiers compris entre 1 et 4 est égale à 10. La somme des entiers compris entre 1 et 5 est égale à 15. La somme des entiers compris entre 1 et 6 est égale à 21. La somme des entiers compris entre 1 et 7 est égale à 28. La somme des entiers compris entre 1 et 8 est égale à 36. La somme des entiers compris entre 1 et 9 est égale à 45. La somme des entiers compris entre 1 et 10 est égale à 55. La somme des entiers compris entre 1 et 11 est égale à 66. La somme des entiers compris entre 1 et 12 est égale à 78. La somme des entiers compris entre 1 et 13 est égale à 91. La somme des entiers compris entre 1 et 14 est égale à 105. La somme des entiers compris entre 1 et 15 est égale à 120.