« Programmation Python/Structures de contrôle » : différence entre les versions

Contenu supprimé Contenu ajouté
Aucun résumé des modifications
Fusion en conservant le code copiable plutôt que la vue IDLE + certaines balises de coloration ne passent pas en PDF
Ligne 17 :
Si nous voulons pouvoir écrire des applications véritablement utiles, il nous faut des techniques permettant d'aiguiller le déroulement du programme dans différentes directions, en fonction des circonstances rencontrées. Pour ce faire, nous devons disposer d'instructions capables de ''tester une certaine condition'' et de modifier le comportement du programme en conséquence.
 
La plus simple de ces instructions conditionnelles est l'instruction "if.", Pourqui expérimenterpermet sonde fonctionnement,tester veuillezune entrercondition danset votrede éditeur Pythonn'exécuter les deuxinstructions lignesque si cette condition est vérifiée. suivantesExemple :
 
<source lang="python">
<pre>
>>> a = 15011
>>> if (a > 100)10 :
print ("a est plus grand que dix")
...
</presource>
 
En exécutant ce programme, on voit "a est plus grand que dix" apparaître à l'écran. On peut perfectionner le programme pour prendre en compte le cas ou "a" est plus petit que dix :
La première commande affecte la valeur 150 à la variable a. Jusqu'ici rien de nouveau.
<source lang="python">
Lorsque vous finissez d'entrer la seconde ligne alors , par contre, vous constatez que Python réagit d'une nouvelle manière. En effet, et à moins que vous n'ayez oublié le caractère « : » à la fin de la ligne, vous constatez que le ''prompt principal'' (>>>) est maintenant remplacé par un prompt secondaire constitué de trois points<ref>Dans certaines versions de l'éditeur Python pour ''Windows'', le prompt secondaire n'apparaît pas.</ref>.
if a > 10 :
print ("a est plus grand que dix")
else:
print ("a n'est pas plus grand que dix")
</source>
 
On utilise aussi parfois elif (contraction de "else if") :
Si votre éditeur ne le fait pas automatiquement, vous devezcomme vous voulez à présent effectuer une tabulation (ou entrer 4 espaces) avant d'entrer la ligne suivante, de manière à ce que celle-ci soit ''indentée'' (c'est-à-dire en retrait) par rapport à la précédente. Votre écran devrait se présenter maintenant comme suit :
<source lang="python">
if a > 10 :
print ("a est plus grand que dix")
elif a == 10:
print ("a est égal à dix")
else:
print ("a est plus petit que dix")
</source>
 
{{remarque|En exécutant un "if" dans l'IDLE, on constate que le ''prompt principal'' (>>>) est maintenant remplacé par un prompt secondaire constitué de trois points (du moins sur Linux).
<pre>
>>> if (a => 15010):
>>>... if (a > 100):
... print "a dépasse la centaine"
...
</pre>
}}
 
L'expression que vous avez placée entre parenthèses est ce que nous appellerons désormais une condition. L'instruction "if" permet de tester la validité de cette condition. Si la condition est vraie, alors l'instruction que nous avons indentée après le « : » est exécutée. Si la condition est fausse, rien ne se passe. Notez que les parenthèses utilisées ici sont optionnelles sous Python. Nous les avons utilisées pour améliorer la lisibilité. Dans d'autres langages, il se peut qu'elles soient obligatoires.
Frappez encore une fois <Enter>. Le programme s'exécute, et vous obtenez :
 
Comme vous l'aurez certainement déjà compris, l'instruction "else" (« sinon », en anglais) permet de programmer une exécution alternative, dans laquelle le programme doit choisir entre deux possibilités. On peut faire mieux encore en utilisant aussi l'instruction "elif" (contraction de « else if ») :
<pre>
a dépasse la centaine
</pre>
 
Recommencez le même exercice, mais avec <code>a = 20</code> en guise de première ligne : cette fois Python n'affiche plus rien du tout.
 
L'expression que vous avez placée entre parenthèses est ce que nous appellerons désormais une condition. L'instruction if permet de tester la validité de cette condition. Si la condition est vraie, alors l'instruction que nous avons indentée après le « : » est exécutée. Si la condition est fausse, rien ne se passe. Notez que les parenthèses utilisées ici sont optionnelles sous Python. Nous les avons utilisées pour améliorer la lisibilité. Dans d'autres langages, il se peut qu'elles soient obligatoires.
 
Recommencez encore, en ajoutant deux lignes comme indiqué ci-dessous. Veillez bien à ce que la quatrième ligne débute tout à fait à gauche (pas d'indentation), mais que la cinquième soit à nouveau indentée (de préférence avec un retrait identique à celui de la troisième) :
 
<pre>
>>> a = 20
>>> if (a > 100):
... print "a dépasse la centaine"
... else:
... print "a ne dépasse pas cent"
...
</pre>
 
Frappez <Enter> encore une fois. Le programme s'exécute, et affiche cette fois :
 
<pre>
a ne dépasse pas cent
</pre>
 
Comme vous l'aurez certainement déjà compris, l'instruction <tt>else</tt> (« sinon », en anglais) permet de programmer une exécution alternative, dans laquelle le programme doit choisir entre deux possibilités. On peut faire mieux encore en utilisant aussi l'instruction <tt>elif</tt> (contraction de « else if ») :
 
<pre>
>>> a = 0
>>> if a > 0 :
... print "a est positif"
... elif a < 0 :
... print "a est négatif"
... else:
... print "a est nul"
...
</pre>
 
== Opérateurs de comparaison ==
Ligne 81 ⟶ 58 :
La condition évaluée après l'instruction if peut contenir les opérateurs de comparaison suivants :
 
<source lang="python">
<pre>
x == y # x est égal à y
x != y # x est différent de y
Ligne 88 ⟶ 65 :
x >= y # x est plus grand que, ou égal à y
x <= y # x est plus petit que, ou égal à y
</presource>
 
Exemple :
Ligne 102 ⟶ 79 :
</pre>
 
Notez bien que l'opérateur de comparaison pour l'égalité de deux valeurs est constitué de deux signes « égale » et non d'un seul<ref>Rappel : l'opérateur % est l'opérateur modulo : il calcule (le reste d'une division entière. Ainsi par exemple, a % 2 fournit le reste de la division de a par 2.</ref>. (Le signe « égale » utilisé seul est un opérateur d'affectation, et non un opérateur de comparaison. Vous retrouverez le même symbolisme en ''[[Programmation C C plus plus Le langage|C++]]'' et en ''[[Programmation Java|Java]]'').
 
Pour rappel, l'opérateur "%" est l'opérateur modulo : il calcule le reste d'une division entière. Ainsi par exemple, "a % 2" fournit le reste de la division de "a" par "2".
 
== Instructions composées – Blocs d'instructions ==
Ligne 192 ⟶ 171 :
instruction ...
</source>
 
== L'instruction "if" ==
 
On utilise très souvent cette structure de contrôle. Sa syntaxe est très simple :
 
<source lang=python>
if condition:
instructions
...
</source>
 
L'indentation après le ":" est obligatoire.
 
Cette structure de contrôle permet de tester une condition et de n'exécuter les instructions que si cette condition est vérifiée. Exemple :
<source lang="python">
a = 11
if a > 10 :
print ("a est plus grand que dix")
</source>
 
"if" veut dire "si" en français.
 
En exécutant ce programme, on voit "a est plus grand que dix" apparaître à l'écran. On peut perfectionner le programme pour prendre en compte le cas ou a est plus petit que dix :
<source lang="python">
if a > 10 :
print ("a est plus grand que dix")
else:
print ("a n'est pas plus grand que dix")
</source>
 
"else" veut dire "sinon" en français.
 
On utilise aussi parfois elif (contraction de "else if") :
<source lang="python">
if a > 10 :
print ("a est plus grand que dix")
elif a == 10:
print ("a est égal à dix")
else:
print ("a est plus petit que dix")
</source>
 
== L'instruction "while" ==
 
permet d'exécuter des commandes '''tant qu''''une ou plusieurs conditions sont vraies.
 
<source lang=python>
while condition:
commandes
</source>
 
par exemple :
 
<source lang=python>
i=0
while i<5:
i=i+1
print i,
</source>
 
donne à l'exécution :
 
<source lang=python>
1 2 3 4 5
</source>
 
== 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 i
</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>
 
== Exception ==
{{Exemple|Exemple|Exemple de gestion d'exception|
<source lang=python>
try:
# Code pouvant générer une exception
except MonException:
# Code en cas d'exception
else:
# Code en cas de non exception
#code dans tous les cas
</source>
}}
Exemple de gestion d'exception : intercepter une division par zéro.
<source lang=python>
a = int(input("Veuillez saisir le numérateur: "))
 
b = int(input("Veuillez saisir le dénominateur: "))
 
try:
 
c = a / b
 
print("Le resultat est :" +c)
 
except ZeroDivision:
 
print(" Pas de division par zéro SVP")
 
finally:
 
print("Fin du script")
</source>
 
 
== Notes ==