Objectif

Cette fiche permet d'introduire la structure et la syntaxe de la boucle bornée for et propose deux exercices d'application corrigés.

La boucle for est communément utilisée lorsque l'on souhaite répéter plusieurs fois une même instruction. Il faut connaitre le nombre de fois que vous souhaitez répéter l'instruction.

Vous aurez besoin d'une variable permettant de compter le nombre de fois que vous répétez l'instruction.

En Python, on indique les valeurs que doit prendre cette variable "compteur" dans une liste.

Utilisation de la boucle for.

Dans cet exemple, la variable qui permet de compter est i. À la première iteration, i prend la valeur du premier élément de la liste, c'est-à-dire 1, et l'instruction est exécutée : on affiche "Hello!". Une fois l'instruction exécutée, i prend la valeur du deuxième élément de la liste et l'instruction est à nouveau exécutée : on affiche "Hello!" une deuxième fois. Une fois la boucle terminée, on aura donc affiché cinq fois "Hello!".

for i in range(n)

La plupart du temps, on n'écrira pas la liste des valeurs que prend i. On préfèrera utiliser range(n) qui génère la liste des nn premiers entiers. Et pour afficher cinq fois "Hello!", on écrira :

Utilisation de la boucle for avec range.

Attention !

range(n) génère la liste des nn premiers entiers en commençant par 0 (et en finissant donc en n1n-1). Ainsi :

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

Vous pouvez aussi utiliser range(n,m) qui liste les entiers entre nn et m1m-1 :

>>> range(1,5)
[1,2,3,4]

Enfin, la commande range(n,m,p) liste les entiers de nn à m1m-1 par pas de pp :

>>> range(1,10,2)
[1,3,5,7,9]

Exercice

Écrire une fonction somme(n) qui prend un nombre entier en argument et renvoie la somme des nn premiers entiers 1+2+3++n1 + 2 + 3 + … + n et qui contient une boucle for.

Analyse de l'énoncé

On cherche à utiliser une boucle for dans la fonction somme(n). Il faut donc tout d'abord repérer l'opération répétitive et déterminer combien de fois elle est répétée.

A la main, on peut donc commencer en testant les cas n=1n=1, n=2n=2, n=3n=3, …

  • Pour n=1n=1, S(1)=1S\left(1\right)=1 ;

  • Pour n=2n=2, S(2)=1+2=3S\left(2\right)=1+2=3 ;

  • Pour n=3n=3, S(3)=1+2+3=6S\left(3\right)=1+2+3=6.

On voit bien en continuant n=4n=4, n=5n=5, … qu'il est préférable d'ajouter 4, 5, … au résultat précédent plutôt que tout recalculer. On préfèrera donc faire S(4)=S(3)+4=6+4=10S(4) = S(3) + 4 = 6 + 4 = 10 plutôt que S(4)=1+2+3+4S(4) = 1 + 2 + 3 + 4.

On a distingué ici l'étape répétitive : S(i)=S(i1)+iS\left(i\right) = S\left(i-1\right) + i.

Pour calculer la somme des entiers de 1 à nn, il faudra faire varier i de 1 à nn. On utilisera donc range(1,n+1).

Résolution

On note S la somme cherchée. Au début de la boucle, la variable S vaut zéro : S = 0. A la fin de la boucle, on veut que S=1+2++nS = 1 + 2 + … + n.

Avant la boucle for, on crée donc la variable S en l'initialisant à 0. A chaque itération de la boucle for, on réalise l'opération répétitive suivante : "stocke S+i dans S".

Solution de l'exercice.
Remarque pour finir

Il existe une formule explicite en fonction de nn pour calculer la somme des nn premiers entiers :

1+2+3++n=n(n+1)2\displaystyle 1 + 2 + 3 + … + n = \frac{n\left(n+1\right)}{2}

Autre exercice

Écrire une fonction puissance(x,n) qui prend un réel xx et un entier naturel nn en argument et renvoie la puissance nn-ième de xx : xnx^n.

Solution de l'exercice.
Quelques remarques sur le corrigé

Comme on répète nn fois x×x××xx\times x\times … \times x, on utilise une boucle for tout comme la somme des nn premiers entiers. Ici on multiplie le résultat par xx à chaque itération.

En Python, il y a la possibilité d'utiliser une double étoile pour calculer une puissance.

Double étoile.

Aussi, le module math de Python dispose d'une fonction pow(x,n) pour calculer la puissance d'un nombre.

Module math.