Aller au contenu

Boucle non bornée

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

Tant que...

1
2
3
4
while Condition:
    instructions (bloc) à répéter

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

Important

Avec une telle boucle, il faut s'assurer que la condition d'exécution deviendra fausse.

Exemple

A représente un nombre entier strictement positif. On recherche la plus grande puissance de 10 inférieure ou égale à A. Ainsi, si A vaut 35 787, alors la plus grande puissance de 10 inférieure ou égale à Aest 10 000 tandis que si A vaut 234, alors la plus grande puissance de 10 inférieure ou égale à Aest 100.

Complétez la définition de la fonction puissance_10_inf() qui prend pour paramètre cet entier naturel A et qui renvoie le plus grand entier 10n tel que 10n \leqslant A.

1
2
3
4
5
6
def puissance_10_inf(A):
    """
    A - int, entier strictement positif
    Sortie: int - plus grand entier 10^n tel que 10^n ⩽ A
    """
    n = 1               # L'entier recherché

Exemples d'exécution :

>>> puissance_10_inf(40)
10

>>> puissance_10_inf(1000)
1000
Une solution
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
def puissance_10_inf(A):
    """
    A - int, entier strictement positif
    Sortie: int - plus grand entier 10^n tel que 10^n ⩽ A
    """
    p = 0               # Exposant
    n = 10**p           # L'entier recherché
    while n <= A:
        p = p+1
        n = 10**p
    return n//10

Notion de compteur

La fonction puissance_10_inf() de l'exemple précédent utilise le principe du compteur. On initialise une variable qui est incrémentée d'une valeur constante (généralement 1) à chaque nouveau tour de boucle.

1
2
3
4
5
compteur = 0

while Condition:
    instructions (bloc) à répéter
    compteur = compteur + 1

Dans le cas d'une fonction, c'est généralement la valeur finale du compteur qui est renvoyée.

Astuce

Au lieu d'écrire

5
compteur = compteur + 1

on peut utiliser le raccourci :

5
compteur += 1