Répétitions conditionnelles (while)

Pour répéter un bloc d’instructions tant qu’une condition est réalisée, Python nous propose la clause while :

Quelques remarques classiques sur ce genre de construction :

  • si condition est fausse dès le départ, le bloc qui suit n’est jamais parcouru.
  • dans la plupart des cas, le bloc qui suit l’instruction d’en-tête while agit sur la condition, de sorte que celle-ci, vraie au départ, devient fausse et provoque la sortie de la clause.
  • on peut écrire une clause while avec une condition toujours vraie (par exemple while 1: ou while True:) à condition (pour éviter une boucle infinie) de sortir par un autre moyen (notamment par break ou return).

Dans l’exemple ci-dessous, on illustre la clause while avec l’exemple classique de la suite dite de Syracuse.

Celle-ci est définie par une valeur initiale {x_0} et la règle suivante : si {x_n} est pair alors {x_{n+1}=x_n/2} sinon {x_{n+1}=3x_n+1}.

Une conjecture célèbre dit que l’un des {x_n} vaut 1 (et la suite boucle alors sur les valeurs {1\to4\to2\to1}).

On étudie ici le comportement très intéressant obtenu pour la valeur initiale {x_0=27} :

Le bloc qui fait suite à l’instruction while peut contenir deux instructions particulières, souvent attachées à un test if :

  • break provoque la sortie immédiate de la clause while.
  • continue ramène à l’évaluation de la condition (ce qui restait du bloc après continue est donc ignoré).

La construction while peut être complétée par une clause else, exécutée si la condition qui suit le while est fausse :

while condition : # tant que la condition est vraie

bloc1_si_condition_vraie # alors on exécute ce bloc

else : # mais quand la condition devient fausse

bloc2_si_condition_fausse # alors on exécute ce bloc

L’utilisation de else attaché à un while est rare. Le bloc2 ci-dessus est en effet parcouru une seule fois, quand la condition devient fausse, sauf si on sort du bloc n˚1 par une instruction break (auquel cas bloc2 est ignoré).

Retour à l’accueil du cours Python/Numpy

Sommaire du chapitre 3

  1. Entrée au clavier (input) et affichage à l’écran (print)
  2. Nécessité de délimiter des blocs d’instructions
  3. L’importance fondamentale de l’indentation en Python
  4. Branchements conditionnels if…elif…else…
  5. Expressions conditionnelles
  6. Répétitions conditionnelles (while)
  7. Notion d’intervalle
  8. Répétitions inconditionnelles (boucles for)
  9. L’instruction pass