Retourner à : Python pour débutants
Pour l’instant, les précédents chapitre se sont attarder sur du code linéaire sans aucune logique. Maintenant on va passer aux choses sérieuses et voir comment on peut introduire des conditions qui vont influencer l’exécution de notre programme. Dans ce chapitre on verra :
- Ce qu’est une condition
- Comment utiliser l’instruction if
- Comment utiliser l’instruction else
- On finira par regarder comment traiter plusieurs conditions alternatives l’instruction elif
Première condition – l’instruction if
Comme le nom l’indique, une condition est une expression de la forme « si quelque », « alors autre chose ». En résumé on va tester une expression booléenne et si le résultat de cette expression est vrai (True), alors on va exécuter un bloc de code. Sinon on ignore le bloc de code en question.
Pour illustrer cela on peut prendre pour exemple un programme qui demande son âge à un utilisateur et affiche le message: « Bonjour, vous êtes majeur », si l’utilisateur entre un âge supérieur ou égal à 18 ans. En anglais on traduirait cet énoncé par « If the age is bigger or equal to 18, print ‘Bonjour, vous êtes majeur' ».
Et en python, si on veut exprimer une telle condition, on va écrire quelque chose qui se rapproche fortement de la phrase anglais mentionnée ci-dessus :
age = int(input("Quel est votre âge ? "))
if age >= 18:
print("Bonjour, vous êtes majeur")
Regardons la ligne 3 et 4 en détail. Tout d’abord on commence par déclarer notre condition, pour cela on utilise le mot clé if, suivi de la condition qu’on souhaite tester, donc ici age >= 18. Ensuite on rajoute un double point pour délimiter la fin de notre condition et le début du bloc code qui doit être exécuté si la condition retourne True. Dans notre cas la condition retourne True, si l’utilisateur est âgé de plus de 18 ans. Ensuite en dessous du if on retrouve le code qui doit être exécuté si cette condition est True, et là, on imprime notre message « Bonjour, vous êtes majeur ».

Comme vous pouvez le voir sur l’image ci-dessus, si vous exécutez le code et que vous renseignez un âge plus grand ou égal à 18 vous avez bien le message « Bonjour, vous êtes majeur » qui s’affiche. En revanche si vous entrée un âge inférieur à 18, vous obtenez le résultat suivant :

Dans ce cas, notre programme se termine sans afficher le message « Bonjour, vous êtes majeur ».
Remarque: Vous pouvez utiliser n’importe quelle expression qui retourne un booléen en tant que condition dans vos ifs. Vous pouvez donc par exemple également vérifier si deux chaînes de caractères sont les mêmes. Par exemple si vous avez une variable « my_name » et que vous souhaitez exécuter du code en particulier si cette variable a la valeur « Jean », vous pouvez utiliser la condition if my_name == ‘Jean’ :
Notez que le print(« Bonjour, vous êtes majeurs ») est indenté avec 4 espaces (ou 1 Tab). Python utilise l’indentation afin de délimiter le bloc code qui appartient au if et doit être exécuté si la condition est True. Donc tout ce qui ce situe en dessous directement en dessous du if et est indenté par rapport au if, est executé si la condition est True. Ici une extension de notre exemple pour mieux illustrer cela :
age = int(input("Quel est votre âge ? "))
if age >= 18:
print("Bonjour, vous êtes majeur!")
print("Bienvenu à vous!")
print("Au revoir")
Ici, les deux prints qui se trouvent directement après le if, sont indentés au même niveau (4 espaces / 1 tab) et appartiennent donc tous les deux au bloc de code qui sera exécuté si la condition de notre if est remplie. Le print du message au revoir est quant à lui à l’extérieur de ce bloc car il est indenté au même niveau que le if (0 espaces / 0 tabs), et il sera donc exécuté indépendamment de la condition « age >= 18 ».
Si on lance notre programme deux fois, et qu’on renseigne une première fois un âge plus grand ou égal à 18, et une deuxième fois un âge inférieur à 18, on obtient le résultat suivant :

Comme vous le voyez pour l’âge supérieur à 18, on à bien les 3 prints qui s’affichent, les deux prints qui appartiennent à notre if, ainsi que le print du message « Au revoir », en revanche si on entre un âge de 15, la condition « age >= 18 » n’est pas remplie, et on a uniquement le message « Au revoir » qui s’affiche.
L’indentation en python
Dans l’exemple de condition que nous venons de voir, on a mentionné indentation du code et on a aussi évoqué la notion de bloc de code. Il est temps maintenant de parler plus en détail de ces imbrications de blocs de code.
Vous retrouverez ci-dessous une illustration afin de vous montrer visuellement les différents codes de bloc de l’exemple précédent ainsi que leur appartenance :

Il est important de noter que l’indentation est extrêmement importante en Python ! En effet, contrairement à d’autres langages, Python se base uniquement sur l’indentation pour délimiter les blocs de code. Une mauvaise indentation peut donc provoquer des erreurs d’exécution ou changer complètement le comportement de votre programme.
Il est aussi nécessaire d’appliquer toujours la même convention d’indentation, soit vous utiliser un nombre précis d’espaces, soit un tab, pour indenter votre code ! Ne mélangez jamais les deux ! Dans ce cours j’utiliserais toujours 4 espaces, mais veuillez bien à respecter la convention en place dans votre entreprise ou votre école.
Exemples d’indentations valides
Ici quelques exemples, d’indentations valides et le résultat de celles-ci :
Exemple 1 :
age = int(input("Quel est votre âge ? "))
if age >= 18:
print("Bonjour, vous êtes majeur!")
print("Bienvenu à vous!")
print("Au revoir")
Résultat :

Exemple 2 :
age = int(input("Quel est votre âge ? "))
if age >= 18:
print("Bonjour, vous êtes majeur!")
print("Bienvenu à vous!")
print("Au revoir")
Résultat :

Exemples d’indentations invalides
Et maintenant quelques exemple d’indentations invalides qui résultent en erreurs :
Exemple 1 :
age = int(input("Quel est votre âge ? "))
if age >= 18:
print("Bonjour, vous êtes majeur!")
print("Bienvenu à vous!")
print("Au revoir")
Résultat :

On a une erreur à la ligne 5, car cette ligne, n’est ni indentée au niveau du bloc if (4 espaces), ni au niveau du code principal (pas d’indentation).
Exemple 2 :
age = int(input("Quel est votre âge ? "))
if age >= 18:
print("Bonjour, vous êtes majeur!")
print("Bienvenu à vous!")
print("Au revoir")
Résultat :

Ici l’erreur se situe à la ligne 4, car cette ligne arrive juste après un if, et donc Python s’attend à un bloc indenté. Or ici la ligne n’a pas d’indentation.
Exemple 3 :
age = int(input("Quel est votre âge ? "))
if age >= 18:
print("Bonjour, vous êtes majeur!")
print("Bienvenu à vous!")
print("Au revoir")
Résultat :

On obtient une erreur au niveau du if, car il est indenté alors qu’il devrait être aligné avec le bloc de code principal.
L’instruction else
Maintenant qu’on a vu comment créer une condition if, voyons ce qu’on peut faire si on veut exécuter du code si la condition n’est pas remplie. Reprenons notre exemple précédent, mais ajoutons-y une nouvelle contrainte. Si l’utilisateur entre un âge supérieur ou égal à 18 ans, on imprime toujours « Bonjour, vous êtes majeur! » et « Bienvenu à vous! », sinon on imprime « Malheureusement vous n’êtes pas majeur! ».
Regardons la encore à quoi pourrait ressembler cette phrase en anglais: If the user enters an age bigger or equal to 18 print « Bonjour, vous êtes majeur! » and « Bienvenu à vous! », else print « Malheureusement vous n’êtes pas majeur! ». Et en python c’est bien le mot clé else qu’on va utiliser pour définir le cas où la condition n’est pas remplie :
age = int(input("Quel est votre âge ? "))
if age >= 18:
print("Bonjour, vous êtes majeur!")
print("Bienvenu à vous!")
else:
print("Malheureusement vous n'êtes pas majeur!")
print("Au revoir")
Attardons nous un peu sur le code qu’on vient de rajouter à notre exemple. Ici, juste après le bloc appartement au if, on a rajouté le mot-clé else suivi d’un double point. Après ce double point on commence un nouveau bloc de code qui sera exécuté si la condition du if n’est pas remplie. Donc ici, si l’utilisateur entre une valeur inférieur à 18 on entre dans le code de bloc du else, et on imprime le message « Malheureusement vous n’êtes pas majeur! » :

En exécutant le code on voit bien que pour un âge de 15 ans, on a le message « Malheureusement vous n’êtes pas majeur! », alors que pour une âge de 37 ans on a le message de bienvenu qui est affiché à l’écran.
L’instruction elif
Il nous reste encore un dernier cas à traiter. Imaginons maintenant que notre exercice consiste à implémenter la chose suivante: Si l’utilisateur entre un âge supérieur à 18 ans, on imprime toujours « Bonjour, vous êtes majeur! » et « Bienvenu à vous! », sinon, si l’utilisateur a un âge égal à 18, on imprime le message « Bravo, tu fais parti des grands », sinon on imprime « Malheureusement vous n’êtes pas majeur! ».
En anglais on aurait donc cette fois-ci l’intitulé suivant: If the user enters an age bigger to 18 print « Bonjour, vous êtes majeur! » and « Bienvenu à vous! », else, if the age is equal to 18 print « Bravo, tu fais parti des grands », else print « Malheureusement vous n’êtes pas majeur! ».
En python cette partie else if, entre le premier if et le else, est représenté par le mot-clé elif (pour else if). Comme pour le if, on doit ajouter une condition bolléenne après le elif, et terminer le tout par un double point et du bloc de code qu’on souhaite exécuter si la condition du elif est remplie. Notez qu’on peut avoir autant de elif que nécessaire après un if. Si on applique cela à notre exemple, ça nous donne :
age = int(input("Quel est votre âge ? "))
if age > 18:
print("Bonjour, vous êtes majeur!")
print("Bienvenu à vous!")
elif age == 18:
print("Bravo, tu fais parti des grands")
else:
print("Malheureusement vous n'êtes pas majeur!")
print("Au revoir")
Maintenant si on exécute notre code et qu’on le teste avec les différents cas, on voit le résultat suivant :

Ici, on voit bien le message « Bravo, tu fais parti des grands » quand l’âge entré est de 18 ans !
Exercice
Afin de mieux vous familiariser avec les conditions, je vous propose un petit exercice que vous pouvez réaliser par vous-même.
Implémenter un programme qui demande deux nombres décimales à l’utilisateur et un symbole « + » ou « -« . Le programme fait ensuite la chose suivante :
- Si l’utilisateur a entré le symbole « + », le programme affiche la somme des deux nombres de la manière suivante: <valeur du premier nombre> + <valeur du deuxième nombre> = <résultat de la somme>
- Si l’utilisateur a entré le symbole « -« , le programme affiche la différence des deux nombres de la manière suivante: <valeur du premier nombre> – <valeur du deuxième nombre> = <résultat de la différence>
- Si l’utilisateur a entré un autre symbole, le programme affiche le message suivant : L’opération demandée n’est pas supportée.
Si vous avez réussi l’exercice, votre code devraient afficher des résultats similaires à ceux affichés dans les exemples ci-dessous :

Les abonnés Standard et Premium retrouvons un solution type dans le code source de ce chapitre. Le fichier contenant la solution s’appelle « tp_1.py ».
Resources
Vous retrouvez ci-dessous un lien vers le code source utilisé dans ce chapitre. Ce lien est uniquement disponible pour les abonnés Standard et Premium.
Quiz
Répondez au quiz ci-dessous afin de vérifier que vous avez bien compris le contenu de cette leçon. Les quiz sont uniquement disponibles pour les abonnés Standard et Premium.