La séquence utilisée dans la construction de la boucle for
n’est pas nécessairement une séquence d’objets particulier tels que des
caractères ou bien des nombres décimaux ou tout autre chose qui sera abordé plus loin. Une boucle for
peut très bien être construire
sur une séquence de nombres entiers compris entre deux valeurs ce qui permet ainsi de contrôler au départ le nombre de répétitions du bloc
d’instructions, à la manière de la boucle while. Dans ce cas, la boucle for
est un cas particulier de la boucle while
.
Et elle se construit ainsi :
for variable in range(a,b):
instruction 1
insctruction 2
...
instruction n
La variable créée par le programmateur n’est ni initialisée, ni incrémentée. Elle prendra, grâce à la fonction range()
,toutes les
valeurs entières comprises entre l’entier a
inclus et l’entier b
exclu.
Cette structure est parfaitement équivalente à celle-ci :
compteur = a
while compteur < b:
instruction 1
instruction 2
...
instruction n
compteur = compteur + 1
Par exemple, cherchons à écrire les dix premiers multiples de 3, sans retour à la ligne.
En utilisant une boucle for
:
En utilisant une boucle while
:
La fonction range()
peut prendre en compte un argument supplémentaire : le pas. Ainsi,
l’instruction for i in range (a, b, p)
fera prendre à la variable i
toutes les valeurs entières comprises entre l’entier
a
inclus et l’entier b
exclus avec un pas p
.
Ainsi, pour écrire les dix premiers multiples de 3 avec la boucle for
, on aurait aussi pu proposer :
Mais la fonction range()
peut aussi :
- Ne contenir qu'un seul argument.
Ainsi l’instruction range(n)
permettra de produire n itérations de boucles. Elle est équivalente à l’instruction range(0,n,1)
qui donne à la variable
les n valeurs 0, 1, 2, …, n–1.
- Utiliser un pas négatif comme dans l'exemple ci-dessous: