Différences entre les versions de « Programmation Python/Instructions répétitives »

Fusion en retirant les chronophages "n'oubliez pas l'indentation" et tapez "Enter" et "ouvrez un cahier"
(Fusion en retirant les chronophages "n'oubliez pas l'indentation" et tapez "Enter" et "ouvrez un cahier")
{{fin}}
 
Sous Python, ''l'affectation multiple'' permet de programmer l'échange d'une manière particulièrement élégante :
{{remarque|Pour quelques exercices, nous ne fournissons pas de solution. Efforcez-vous de les trouver sans aide, même si cela vous semble difficile. C'est en effet en vous acharnant sur de tels problèmes que vous apprendrez le mieux.}}
 
A la suite de l'exercice proposé ci-dessus, vous aurez certainement trouvé une méthode, et votre professeur vous demandera probablement de la commenter en classe. Comme il s'agit d'une opération courante, les langages de programmation proposent souvent des raccourcis pour l'effectuer (par exemple des instructions spécialisées, telle l'instruction SWAP du langage ''[[Basic]]''). Sous Python, ''l'affectation multiple'' permet de programmer l'échange d'une manière particulièrement élégante :
 
<pre>
>>> a, b = b, a
</pre>
 
== Répétitions en boucle - lL'instruction "while" ==
(On pourrait bien entendu échanger d'autres variables en même temps, dans la même instruction).
 
Elle permet d'exécuter des commandes '''tant qu''''une ou plusieurs conditions sont vraies.
== Répétitions en boucle - l'instruction while ==
 
<source lang=python>
L'une des choses que les machines font le mieux est la répétition sans erreur de tâches identiques. Il existe bien des méthodes pour programmer ces tâches répétitives. Nous allons commencer par l'une des plus fondamentales : la boucle construite à partir de l'instruction <tt>while</tt>.
while condition:
commandes
</source>
 
par exemple :
Veuillez donc entrer les commandes ci-dessous :
 
<pre>
>>> a = 0
>>> while (a < 7): # (n'oubliez pas le double point !)
... a = a + 1 # (n'oubliez pas l'indentation !)
... print a
</pre>
 
<source lang=python>
Frappez encore une fois <Enter>. Que se passe-t-il ?
>>> ai = 0
while i < 5:
i = i + 1
print(i)
</source>
 
donne à l'exécution :
Avant de lire les commentaires de la page suivante, prenez le temps d'ouvrir votre cahier et d'y noter cette série de commandes. Décrivez aussi le résultat obtenu, et essayez de l'expliquer de la manière la plus détaillée possible.
 
<source lang=python>
==== Commentaires ====
1 2 3 4 5
</source>
 
LeEn mot <tt>while</tt> signifie « tant que » en anglais. Cette instruction utilisée àeffet, la seconde ligne indique à Python qu'il lui faut ''répéter continuellement le bloc d'instructions qui suit, tant que'' le contenu de la variable "a" reste inférieur à 75.
 
Comme l'instruction <tt>if</tt> abordée au chapitre précédent, l'instruction <tt>while</tt> amorce une ''instruction composée''. Le double point à la fin de la ligne introduit le bloc d'instructions à répéter, lequel doit obligatoirement se trouver en retrait. Comme vous l'avez appris au chapitre précédent, toutes les instructions d'un même bloc doivent être indentées exactement au même niveau (c'est-à-dire décalées à droite d'un même nombre d'espaces).
Vous devriez obtenir la liste des carrés et des cubes des nombres de 1 à 12.
 
Notez au passage que l'instruction "print" permet d'afficher plusieurs expressions l'une à la suite de l'autre sur la même ligne : il suffit de les séparer par des virgules. Python insère automatiquement un espace entre les éléments affichés.
 
== Construction d'une suite mathématique ==
</pre>
 
Les termes de la suite de Fibonacci sont affichés sur la même ligne. Vous obtenez ce résultat grâce à la virgule placée à la fin de la ligne qui contient l'instruction "print". Si vous supprimez cette virgule, les nombres seront affichés l'un en-dessous de l'autre.
 
Dans vos programmes futurs, vous serez très souvent amenés à mettre au point des boucles de répétition comme celle que nous analysons ici. Il s'agit d'une question essentielle, que vous devez apprendre à maîtriser parfaitement. Soyez sûr que vous y arriverez progressivement, à force d'exercices.
Jusqu'à présent, vous avez toujours utilisé Python ''en mode interactif'' (c'est-à-dire que vous avez à chaque fois entré les commandes directement dans l'interpréteur, sans les sauvegarder au préalable dans un fichier). Cela vous a permis d'apprendre très rapidement les bases du langage, par expérimentation directe. Cette façon de faire présente toutefois un gros inconvénient : toutes les séquences d'instructions que vous avez écrites disparaissent irrémédiablement dès que vous fermez l'interpréteur. Avant de poursuivre plus avant votre étude, il est donc temps que vous appreniez à sauvegarder vos programmes dans des fichiers, sur disque dur ou disquette, de manière à pouvoir les retravailler par étapes successives, les transférer sur d'autres machines, etc.
 
Pour ce faire, vous allez désormais rédiger vos séquences d'instructions dans un ''{{glossaire|éditeur de textes}}'' quelconque (par exemple ''[[{{w|Joe]]'s Own Editor}}'', ''[[Nedit]]{{w|NEdit}}'', ''[[{{w|Kate]] (logiciel)|Kate}}''… sous Linux, ''[[DOS/Edit|Edit]]'' sous ''MS-DOS'', ''[[Wordpad]]{{w|WordPad}}'' sous ''Windows'', ou mieux encore l'éditeur incorporé dans une interface de développement telle que ''[[IDLE]]'' ou ''[[PythonWin]]''). Ainsi vous écrirez un script, que vous pourrez ensuite sauvegarder, modifier, copier, etc. comme n'importe quel autre texte traité par ordinateur<ref>Il serait parfaitement possible d'utiliser un système de {{glossaire|traitement de textes}}, à la condition d'effectuer la sauvegarde sous un format "texte pur" (sans balises de mise en page). Il est cependant préférable d'utiliser un véritable éditeur ANSI "intelligent" tel que ''[[nedit]]NEdit'' ou ''[[IDLE]]'', muni d'une fonction de {{glossaire|coloration syntaxique}} pour Python, qui vous aide à éviter les fautes de syntaxe. Avec ''IDLE'', suivez le menu : ''File → New window'' (ou frappez ''CTRL-N'') pour ouvrir une nouvelle fenêtre dans laquelle vous écrirez votre script. Pour l'exécuter, il vous suffira (après sauvegarde), de suivre le menu : ''Edit → Run script'' (ou de frapper ''CTRL-F5'').</ref>.
 
La figure ci-dessous illustre l'utilisation de l'éditeur ''[[Nedit]]NEdit'' sous ''[[Gnome]]'' (Linux) :
 
[[Image:Apprendre à programmer avec Python 7.png|center|500px]]
</ol>
{{fin}}
 
== L'instruction "for" ==
Exemple de la boucle en C for (i=0; i<5 ; i++ )
<source lang=python>
for i in range(5) :
commandes
</source>
 
Pour le "foreach" :
<source lang=python>
for champ in ['champ1', 'champ2', 'champ3']:
commandes
</source>
 
== Les instructions "break", "continue" ==
L'instruction break permet d'arrêter une boucle avant sa fin. L'instruction continue est similaire, mais au lieu d'interrompre la boucle, elle permet de passer à l'itération suivante.
<source lang=python>
for i in range(5):
if i==3:
break
... print ai
</source>
affichera
<source lang=python>
0 1 2
</source>
tandis que
<source lang=python>
for i in range(5):
if i==3:
continue
print i
</source>
affichera
<source lang=python>
0 1 2 4
</source>
 
== Notes ==