Fonction range( )

Définition

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.

Remarque

range(0,4) est égal à range(4)

ExempleUtilisation minimale de range( )

1
for i in range(4):
2
    print(i)

va nous donner :

1
0
2
1
3
2
4
3

i prend donc successivement toutes les valeurs entières entre 0 et 3. Il y a bien 4 valeurs !

RemarqueObjet range

L'objet range(4) n'est pas « techniquement » égal à la liste [0, 1, 2, 3], car ce n'est pas un objet de type List:

1
>>> type(range(4))
2
<class 'range'>

Toutefois, si nécessaire, on peut le convertir en liste :

1
>>> list(range(4))
2
[0, 1, 2, 3]

Il faut donc garder en tête que l'objet renvoyé par range() est un itérable assimilable à une liste de nombres.

ExempleLa table de multiplication du 8

1
Pour k allant de 1 à 10 :
2
   afficher k*8
1
for k in range(1,11) :
2
	print("8 x {} = {}".format(k, 8*k))

Ce qui donne :

1
8 x 1 = 8
2
8 x 2 = 16
3
8 x 3 = 24
4
8 x 4 = 32
5
8 x 5 = 40
6
8 x 6 = 48
7
8 x 7 = 56
8
8 x 8 = 64
9
8 x 9 = 72
10
8 x 10 = 80

Boucle avec pas positif

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, ...

Remarque : si p est omis, il vaut 1 par défaut.

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

On obtient donc :

1
2
2
4
3
6
4
8
5
10
6
12
7
14
8
16
9
18
10
20

Boucle 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.

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

On obtient :

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

Une double boucle for

Il est très souvent utile d'imbriquer une boucle dans une autre, notamment lors du parcours de tous les pixels d'une image. Prenons pour l'instant un exemple numérique.

Le programme suivant :

1
for a in range(1,5):
2
	for b in range(1,4):
3
		p = a * b
4
		print("{} x {} = {}".format(a, b, p))
5
	print('--------------')

va donner ceci :

1
1 x 1 = 1
2
1 x 2 = 2
3
1 x 3 = 3
4
--------------
5
2 x 1 = 2
6
2 x 2 = 4
7
2 x 3 = 6
8
--------------
9
3 x 1 = 3
10
3 x 2 = 6
11
3 x 3 = 9
12
--------------
13
4 x 1 = 4
14
4 x 2 = 8
15
4 x 3 = 12
16
--------------
17

Le séparateur -------------- permet de bien comprendre la fin de la deuxième boucle sur la variable b.