Aller au contenu

Boucle bornée

De manière générale, la boucle « for » s'utilise lorsqu'on connaît à l'avance le nombre de répétitions à effectuer dans un programme.

En Python, la syntaxe de la boucle « Pour » est un peu particulière. Elle s'écrit sous la forme :

1
2
3
4
for (variable) in (sequence):
    instructions (bloc) à répéter

## Sortie de la boucle en revenant en début de ligne

Une « séquence » peut être :

  • générée par un itérateur ;
  • une chaîne de caractères (str) ;
  • une liste de nombres ;
  • etc...

Valeurs générées par un itérateur

La fonction range() dans une boucle for permet à une variable de prendre successivement des valeurs entières selon le principe suivant :

A savoir

a, b et p sont des variables de type int.

  • range(a, b) génère les entiers a, a+1, a+2, ..., b-1.

  • range(b) est une abréviation pour range(0, b).

  • range(a, b, p) génère les entiers a, a+p, a+2*p, a+3*p, ..., a+k*p, où a+k*p est la dernière valeur s'écrivant sous cette forme tout en restant strictement inférieure à b.

Exemples

  1. Lister les valeurs successives prisent par la variable k avec l'instruction suivante :

    for k in range(2, 8)
    

    Une solution

    Les valeurs successives prises par la variable k sont :
    2, 3, 4, 5, 6 puis 7

  2. Lister les valeurs successives prisent par la variable k avec l'instruction suivante :

    for k in range(5, 25, 4)
    

    Une solution

    Les valeurs successives prises par la variable k sont :
    5, 9, 13, 17 puis 21. 25 n'est pas atteint puisqu'il représente la borne supérieure (exclue) de l'intervalle généré.

  3. La variable k prend successivement pour valeurs : 7, 10, 13, 16, 19.
    Donner une instruction utilisant la fonction range() permettant de générer cette liste d'entiers.

    Une solution

    Trois solutions sont possibles :

    for k in range(7, 20, 3)
    
    ou
    for k in range(7, 21, 3)
    
    ou
    for k in range(7, 22, 3)
    
    mais pas
    for k in range(7, 23, 3)
    
    qui génère la liste : 7, 10, 13, 16, 19 puis 22

Notion d'accumulateur

Un accumulateur est une variable ayant une valeur initiale et à laquelle on ajoute (ou multplie par) une valeur à chaque répétition des instructions d'une boucle.

1
2
3
4
5
accumulateur = valeur_initiale

for i in range(a, b):
    instructions (bloc)
    accumulateur = accumulateur + valeur
Dans le cas d'une fonction, c'est généralement la valeur finale de l'accumulateur qui est renvoyée.

Exemple

Complétez la définition de la fonction produit() qui prend pour paramètre un entier naturel n et qui renvoie le produit P des entiers de 1 à n : P = 1 + 2 + ... + n.

1
2
3
4
5
def produit(n):
    """
    n - int, n >= 0
    Sortie : int - le produit des entiers de 1 à n.
    """
Une solution

Question importante : pourquoi faut-il initialiser P avec la valeur 1 ?

1
2
3
4
5
6
7
8
9
def produit(n):
    """
    n - int, n >= 0
    Sortie : int - le produit des entiers de 1 à n.
    """
    P = 1
    for i in range(1, n+1):
        P = P*i
    return P