Les boucles "pour"

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 du for.
  • 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.

Les boucles avec pas.

Comment afficher les entiers pairs entre 2 et 20 ?

Le plus simple est d'utiliser range(a,b,p) qui permet de parcourir les valeurs supérieures ou égales à a et strictement inférieures à b de p en p : a, a+p, a+2p, a+3p, ...


for k in range(2,21,2) :
	print(k)

On obtient :

2
4
6
8
10
12
14
16
18
20

Les boucles avec pas négatif.

Comment afficher les entiers en ordre décroissant ?

Le plus simple est d'utiliser range(a,b,p) avec une valeur négative du pas p.


for i in range(15,0,-1) :
	print(i)

On obtient :

15
14
13
12
11
10
9
8
7
6
5
4
3
2
1