19. Attendre - while

Dans ce chapitre, nous découvrons un deuxième type de boucle, la boucle while. Elle est souvent utilisée pour attendre quelque chose. Nous allons voir que :

  • la boucle while répète aussi longtemps qu’une condition est vraie,

  • la fonction sleep() permet d’attendre et ralentir le programme,

  • le mot-clé break permet de sortir de la boucle.

Question

En Python, while est




19.1. Compteur à rebours

On peut utiliser la boucle while pour créer un compteur à rebours. Pour attendre une seconde, la fonction sleep() du module time est importée.

19.2. Lister des noms

Nous utilisons une boucle while pour demander des noms à l’utilisateur. On ne peut pas savoir à l’avance combien de noms il y aura, donc ici nous ne pouvons pas utiliser la boucle for. Nous prenons comme condition de terminaison une réponse avec une chaîne vide ('').

La convention est d’utiliser des noms au pluriel (noms) pour désigner la liste et le même nom au singulier (nom) pour désigner un de ses éléments.

Exercice 1

Entrez les noms de 3-4 de vos amis.

19.3. Faire une somme

Nous utilisons une boucle while pour demander des nombres à l’utilisateur. On ne peut pas savoir à l’avance combien de nombres il y aura, et donc nous ne pouvons pas utiliser la boucle for. Nous prenons comme condition de terminaison une réponse avec une chaîne vide ('').

Au lieu d’écrire while x != '': nous pouvons simplifier vers while x:. La raison est que la chaîne vide est associée à False et toute autre chaîne non vide est associée à True.

Exercice 2

Entrez les frais de vos 3 derniers achats.

19.4. Faire une moyenne

Nous utilisons une boucle while pour demander des nombres à l’utilisateur. On ne peut pas savoir à l’avance combien de nombres il y aura, et donc nous ne pouvons pas utiliser la boucle for. Nous prenons comme condition de terminaison une réponse avec une chaîne vide ('').

Exercice 3

Entrez vos notes de français.

19.5. Deviner un nombre

On peut aussi utiliser une boucle while pour deviner un nombre. Ici on importe la fonction randint() du module random. Elle fournit un nombre entier aléatoire entre deux bornes (1, 99).

La fonction input() ne retourne que le type str. La fonction int() transforme le type string (chaîne) en entier (integer).

Exercice 4

Quelle est la meilleure stratégie pour deviner un nombre ?

19.6. Factoriser

Le programme va factoriser le nombre que vous entrez

19.7. En code binaire

Le programme transforme l’entier en code binaire.

19.8. Indentation

On appelle bloc une ou plusieurs lignes d’instructions qui forment un ensemble. Dans les langages C ou JavaScript un bloc est délimité avec des accolades {...}. L’indentation est encouragée, mais reste optionnelle.

En Python, l’indentation est obligatoire. C’est la façon officielle de designer un bloc. Ceci présente deux avantages :

  • plus besoin d’accolades pour délimiter un bloc,

  • la structure des blocs est claire et visuelle.

Une indentation est un retrait du code par rapport à la marge gauche de 4 caractères. Elle peut être insérée avec la touche tabulateur TAB (symbolisée par une flèche à gauche du clavier).

Un bloc est défini comme un ensemble de lignes de même indentation. Des blocs marqués par une indentation se trouvent après les mots-clés pour :

  • la définition de fonction (def),

  • l’instruction conditionnelle (if-elif-else),

  • la boucle (for/while).

En Python, le symbole : en fin de ligne introduit un sous-bloc qui doit être indenté. Voici 5 sous-blocs à la suite des mots-clés def, if, elif, else, for :

Dans l’exemple suivant, nous avons une boucle qui fait trois itérations. Les deux instructions print() font partie du bloc de la boucle.

Exercice 5

Enlevez l’indentation de l’instruction print('-' * 11).

19.9. Sortir avec break

Le mot-clé break, seul sur une ligne, permet de sortir d’une boucle. Souvent cette méthode est utilisée pour sortir d’une boucle infinie.