Les conditions if / else / elif
Apprendre à programmer en python
L’instruction if
Syntaxe
if expression: # ne pas oublier la ponctuation ':'
bloc d'instructions # attention à l'indentation
# suite du programme
Si l’expression est vraie (True) alors le bloc d’instructions est exécuté. Si l’expression est fausse (False) on passe directement à la suite du programme.
Premier script
Nous allons commencer par créer le script condition1.py
:
Ouvrir Thonny et coller le code ci-dessous :
# script condition1.py
chaine = input("Note sur 20 : ")
note = float(chaine)
if note >= 10.0:
# ce bloc est exécuté si l'expression (note >= 10.0) est vraie
print("J'ai la moyenne")
print("Fin du programme")
File → Save As
Au Lycée :
Répertoire : Votre dossier de travail, NSI, Python, Cours
Nom du fichier : condition1.py
Exemple : H:\Travail\NSI\Python\Cours\condition1.py
Pour exécuter le script menu Run > Run current script (ou touche F5) :
>>>
Note sur 20 : 16
J'ai la moyenne
Fin du programme
>>>
Note sur 20 : 5
Fin du programme
L’instruction else
Une instruction else
est toujours associée à une instruction if
Syntaxe
if expression:
bloc d'instructions 1 # attention à l'indentation
else: # else est au même niveau que if
bloc d'instructions 2 # attention à l'indentation
# suite du programme
Si l’expression est vraie (True) alors le bloc d’instructions 1 est exécuté.
Si l’expression est fausse (False) alors c’est le bloc d’instructions 2 qui est exécuté.
# script condition2.py
chaine = input("Note sur 20 : ")
note = float(chaine)
if note >= 10.0:
# ce bloc est exécuté si l'expression (note >= 10.0) est vraie
print("J'ai la moyenne")
else:
# ce bloc est exécuté si l'expression (note >= 10.0) est fausse
print("C'est en dessous de la moyenne")
print("Fin du programme")
Tester ce code sur Thonny pour retrouver les résultats suivants :
>>>
Note sur 20 : 15
J'ai la moyenne
Fin du programme
>>>
Note sur 20 : 8.5
C'est en dessous de la moyenne
Fin du programme
>>>
Note sur 20 : 56
J'ai la moyenne
Fin du programme
Pour traiter le cas des notes invalides (<0 ou >20), on peut imbriquer des instructions conditionnelles :
# script condition3.py
chaine = input("Note sur 20 : ")
note = float(chaine)
if note > 20.0 or note < 0.0:
# ce bloc est exécuté si l'expression (note > 20.0 or note < 0.0) est vraie
print("Note invalide !")
else:
# ce bloc est exécuté si l'expression (note > 20.0 or note < 0.0) est fausse
if note >= 10.0:
# ce bloc est exécuté si l'expression (note >= 10.0) est vraie
print("J'ai la moyenne")
else:
# ce bloc est exécuté si l'expression (note >= 10.0) est fausse
print("C'est en dessous de la moyenne")
print("Fin du programme")
>>>
Note sur 20 : 56
Note invalide !
Fin du programme
>>>
Note sur 20 : 14.6
J'ai la moyenne
Fin du programme
On ajoute encore un niveau d’imbrication pour traiter les cas particuliers 0 et 20 :
# script condition4.py
chaine = input("Note sur 20 : ")
note = float(chaine)
if note > 20.0 or note < 0.0:
print("Note invalide !")
else:
if note >= 10.0:
print("J'ai la moyenne")
if note == 20.0:
# ce bloc est exécuté si l'expression (note == 20.0) est vraie
print("C'est même excellent !")
else:
print("C'est en dessous de la moyenne")
if note == 0.0:
# ce bloc est exécuté si l'expression (note == 0.0) est vraie
print("... lamentable !")
print("Fin du programme")
>>>
Note sur 20 : 20
J'ai la moyenne
C'est même excellent !
Fin du programme
>>>
Note sur 20 : 3
C'est en dessous de la moyenne
Fin du programme
L’instruction elif
Une instruction elif
(contraction de else if) est toujours associée à une instruction if
Syntaxe
if expression 1:
bloc d'instructions 1
elif expression 2:
bloc d'instructions 2
elif expression 3:
bloc d'instructions 3 # ici deux instructions elif, mais il n'y a pas de limitation
else:
bloc d'instructions 4
# suite du programme
Si l’expression 1 est vraie alors le bloc d’instructions 1 est exécuté, et on passe à la suite du programme. Si l’expression 1 est fausse alors on teste l’expression 2 :
- si l’expression 2 est vraie on exécute le bloc d’instructions 2, et on passe à la suite du programme.
- si l’expression 2 est fausse alors on teste l’expression 3, etc.
Le bloc d’instructions 4 est donc exécuté si toutes les expressions sont fausses (c’est le bloc “par défaut”).
Parfois il n’y a rien à faire.
Dans ce cas, on peut omettre l’instruction else
:
if expression 1:
bloc d'instructions 1
elif expression 2:
bloc d'instructions 2
elif expression 3:
bloc d'instructions 3
# suite du programme
L’instruction elif
évite souvent l’utilisation de conditions imbriquées (et souvent compliquées).
Exemple
# script condition5.py
# ce script fait la même chose que condition4.py
note = float(input("Note sur 20 : "))
if note == 0.0:
print("C'est en dessous de la moyenne")
print("... lamentable !")
elif note == 20.0:
print("J'ai la moyenne")
print("C'est même excellent !")
elif note < 10.0 and note > 0.0: # ou bien : elif 0.0 < note < 10.0:
print("C'est en dessous de la moyenne")
elif note >= 10.0 and note < 20.0: # ou bien : elif 10.0 <= note < 20.0:
print("J'ai la moyenne")
else:
print("Note invalide !")
print("Fin du programme")
>>>
Note sur 20 : 20
J'ai la moyenne
C'est même excellent !
Fin du programme
>>>
Note sur 20 : 3
C'est en dessous de la moyenne
Fin du programme
>>>
Note sur 20 : 77
Note invalide !
Fin du programme
Entraînement 1 :
En vous inspirant de l'algorithme suivant, écrire un programme en python qui calcule votre age par rapport à votre année de naissance et précise si vous êtes majeur ou mineur.
ALGORITHME age
DONNEE
Date : 2020, entier
VARIABLE
annee_naissance : entier
age : entier
DEBUT
écrire ("Quelle est ton année de naissance ?")
lire (annee_naissance)
age = date - annee_naissance
écrire ("tu as", age,"" ans")
si age > 18 alors
écrire ("vous êtes majeur")
sinon
écrire ("vous êtes mineur")
finsi
FIN
Entraînement 3 :
Écrire un script qui demande la note au bac et qui affiche la mention correspondante. Par exemple :
>>>
Note au bac (sur 20) : 13.5
Bac avec mention Assez Bien
>>>
Note au bac (sur 20) : 10.9
Bac avec mention Passable
>>>
Note au bac (sur 20) : 4
Recalé
>>>
Entraînement 4 :
Écrire un programme en langage python qui demande à l'utilisateur de saisir un nombre entier et de lui afficher si ce nombre est pair ou impair.
Voir une solution