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Ă !")
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 â â
-
Ă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 !
-
Quelle est la stratégie la plus efficace ?
-
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
-
â Ăcrire un script qui dĂ©termine si un nombre entier est premier ou pas. Par exemple :
Nombre ? 17 17 est un nombre premier
-
â â 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