Aller au contenu

Chapitre 3 - Les boucles

Une boucle permet d'exécuter une portion de code plusieurs fois de suite. C'est la connaissance, ou non, du nombre de fois que la boucle sera exécutée qui indiquera quelle structure utiliser de préférence.

1. L'instruction while

while (expression):     # ne pas oublier le signe de ponctuation ':'
    bloc instructions   # attention Ă  l'indentation
# suite du programme

De mĂȘme que pour les conditions, l'expression a toujours une valeur boolĂ©enne (True ou False).

Si l'expression est vraie (True) le bloc d'instructions est exécuté, puis l'expression est à nouveau évaluée.

Le cycle continue jusqu'Ă  ce que l'expression soit fausse (False) : on passe alors Ă  la suite du programme.

Exemple : un script qui compte de 1 Ă  4

# initialisation de la variable de comptage
compteur = 1
while compteur<5:
    # ce bloc est exécuté tant que la condition (compteur<5) est vraie
    print(compteur, compteur<5)
    compteur += 1    # incrémentation du compteur, compteur = compteur + 1
print("Fin de la boucle")

Table de multiplication par 8 :

compteur = 1    # initialisation de la variable de comptage
while compteur<=10:
    # ce bloc est exécuté tant que la condition (compteur<=10) est vraie
    print(compteur, '* 8 =', compteur*8)
    compteur += 1    # incrémentation du compteur, compteur = compteur + 1
print("Et voilĂ  !")

image.png

2. L'instruction for

for (élément) in (séquence) :
    bloc instructions
# suite du programme

Une séquence de données est une structure de données itérable.

En classe de premiÚre, la plupart du temps les séquences seront des chaßnes de caractÚres, des listes ou bien des range.

chaine = 'Bonsoir'
for lettre in chaine: # lettre est la variable d'itération
    print(lettre)
print("Fin de la boucle")

La variable lettre est initialisée avec le premier élément de la séquence (B).

Le bloc d'instructions est alors exécuté.

Puis la variable lettre est mise à jour avec le second élément de la séquence (o) et le bloc d'instructions à nouveau exécuté...

Le bloc d'instructions est exécuté une derniÚre fois lorsqu'on arrive au dernier élément de la séquence (r).

Un autre exemple avec une liste :

maliste = ['Pierre',67.5,18]
for element in maliste:
    print(element)
print('Fin de la boucle')

Là, on affiche dans l'ordre les éléments de la liste. L'association avec la fonction range() est trÚs utile pour créer des séquences automatiques de nombres entiers :

print(list(range(1,5)))
for i in range(1,5):
    print(i)
print("Fin de la boucle")

La création d'une table de multiplication paraßt plus simple avec une boucle for qu'avec une boucle while:

for compteur in range(1,11):
    print(compteur, '* 9 =', compteur*9)
print("Et voilĂ  !")

3. L'instruction break

L'instruction break provoque une sortie immédiate d'une boucle while ou d'une boucle for.

Dans l'exemple suivant, l'expression True est toujours ... vraie : on a une boucle sans fin.

L'instruction break est donc le seul moyen de sortir de la boucle :

import time     # importation du module time
print('Heure courante ',time.strftime('%H:%M:%S'))
while True:
    # strftime() est une fonction du module time
    quitter = input('Voulez-vous quitter le programme (o/n) ? ')
    if quitter == 'o':
        break
    print('Heure courante ',time.strftime('%H:%M:%S'))
print("A bientĂŽt")

Astuce

Si vous connaissez le nombre de boucles Ă  effectuer, utilisez une boucle for.

Autrement, utilisez une boucle while (notamment pour faire des boucles sans fin).

Pour aller plus loin : En algorithmique (informatique en français), il existe une autre structure de boucle :

répéter:
    bloc instructions
    tant que (expression)

Cette structure n'existe pas en Python, mais on peut l'écrire de façon un peu (trÚs) artificielle de la façon suivante:

while True:
    bloc instructions
    if not condition:
        break
# suite du programme

4. Exercices

Exercice 3.1 ☆

Écrire un programme Python qui lit un entier n puis calcule et affiche la somme des entiers de 1 jusqu'à n (compris) en utilisant la boucle for.

Exercice 3.2 ★

Écrire un script qui affiche toutes les tables de multiplication (de 1 à 10).

Exercice 3.3 ★

Écrire un script qui calcule la moyenne d'une sĂ©rie de notes. On pourra utiliser une variable qui contient la somme intermĂ©diaire des notes.

Exemple :

Nombre de notes ? 3
-->  15
-->  11.5
-->  14
Moyenne : 13.5

Exercice 3.4 ★

Écrire un programme Python qui lit un entier n et affiche tous les nombres pairs compris entre 0 et n (les deux inclus) sur une seule ligne et sĂ©parĂ©s par des espaces.

Exercice 3.5 ★

Avec une boucle for, Ă©crire un script qui compte le nombre de lettres z dans une chaĂźne de caractĂšres.

Exemple :

Entrer la chaĂźne : Zinedine Zidane
RĂ©sultat : 2

Exercice 3.6 ★☆

  1. Écrire le script du jeu de devinette suivant :

    Le jeu consiste Ă  deviner un nombre entre 1 et 100 :
    --->   50
    trop petit !
    --->   75
    trop petit !
    --->   87
    trop grand !
    --->   81
    trop petit !
    --->   84
    trop petit !
    --->   85
    Gagné en 6 coups !
    
  2. Quelle est la stratégie la plus efficace ?

  3. Montrer que l'on peut deviner un nombre en 7 coups maximum.

    Remarque : pour créer un nombre entier aléatoire entre 1 et 100 :

    import random
    nombre = random.randint(1,100)
    

    RĂ©ponses aux questions 2 et 3:

    Bibliographie : La dichotomie

Exercice 3.7

  1. ★ Écrire un script qui dĂ©termine si un nombre entier est premier ou pas. Par exemple :

    Nombre ? 17
    17 est un nombre premier
    
  2. ★★ Ecrire un script qui dĂ©compose un nombre entier en un produit de facteurs premiers.

    Nombre à décomposer ? 2142
    2142 = 2 * 3 * 3 * 7 * 17