Objectifs de la leçon :
Cette leçon est centrée sur l'utilisation des structures conditionnelles, il va s'agir d'exécuter des actions en fonction d'une ou plusieurs conditions.
Au passage, on va découvrir la notion de bloc d'instructions.
Pré-requis :
La leçon 1 : afficher, saisir, les variables, les calculs.
Dans cette leçon, on réalise des instructions conditionnelles, c'est à dire qu'on met en oeuvre un contrôle du type Si ... Alors... Sinon.
Vérifier la valeur d'une variable
On imagine que l'utilisateur de notre programme a saisi son âge dans un formulaire, et sa saisie a été stockée dans la variable MON_AGE.
![]() | Pourquoi le « print() » est décalé par rapport au « if » ? On appelle ce décalage une « indentation », et vous venez de découvrir le principe de « bloc d'instructions ». Un bloc d'instructions est constitué : -> d'un en-tête avec le mot-réservé if, de la condition à vérifier, et « : » pour terminer. -> des instructions du bloc qui sont indentées par rapport à l'en-tête Schéma : en-tête :- Le guide de style Python veut que cette indentation soit de 4 espaces. |
Cette fois-ci on va fournir une alternative à notre vérification.
Plutôt qu'une seule alternative à deux possibilités, il est possible de choisir entre plus de deux possibilités en rajoutant des « elif ».
![]() | Remarquez que pour tester que MON_AGE vaut 18, on utilise == et non pas =:
if MON_AGE == 18Le = est réservé à l'affectation, le == est réservé au test d'égalité. |
Les structures conditionnelles.
Les structures conditionnelles sont utilisées en programmation lorsqu'on souhaite effectuer une ou plusieurs instructions seulement si une condition est vérifiée.
Effectuer un test simple :
Un if permet d'exécuter une action si une condition est remplie.
Effectuer un test et réaliser une action si la condition n'est pas remplie :
Gérer plus de deux possibilités :
![]() | Un résumé sur la syntaxe des structures conditionnelles : if simple : if condition: if else : if condition: if elif elif ... else : (autant d'elif qu'on veut) if condition: Pour constituer un bloc d'instructions, il faut un en-tête suivi d'instructions décalées par rapport à l'en-tête :
|
Les opérateurs de comparaison
![]() | Tableau listant les différents opérateurs de comparaison existants :
| Condition | Opérateur | |
Prédicats multiples, utilisation des connecteurs logiques ET, OU et NON
Le ET logique
Pour vérifier que deux conditions sont simultanément réalisées, on dispose du ET logique qui s'écrit and :
Le OU logique
Pour vérifier que sur deux conditions, une au moins est réalisée, on dispose du OU logique qui s'écrit or :
La négation
Parfois, il est plus facile de prendre la négation d'une condition, on dispose pour cela de l'opérateur not :
Grouper des conditions avec des parenthèses :
Il est possible de grouper des conditions avec des parenthèses. :
Utiliser un = au lieu de == pour tester une égalité
Faire la confusion entre < et <=
Faire un ensemble de tests liés, avec uniquement des if
Croire qu'un else peut être le sinon de plusieurs si...
else et elif sont optionnels
Factoriser du code
Les lois de Morgan
Faire du debuggage avec les exceptions
Lorsque votre programme doit interagir avec l'utilisateur, plutôt que d'envisager tous les cas possibles et imaginables et de le prévoir dans des if/elif, vous pouvez utiliser les exceptions, c'est très recommandé.
Grossièrement, les exceptions permettent d'intercepter les erreurs dans l'exécution de votre programme, et d'exécuter une action ou afficher un message en fonction de ces erreurs. Très pratique.

age = 23
if age < 18:
print('Bonjour')

age = 18
if age < 18:
print('Bonjour')
else:
print('Au revoir')

age = 18
if age <= 18:
print('Bonjour')
else:
print('Au revoir')

##### Code A
note = 9
if note < 10:
print('Refusé')
elif note >= 10 and note < 15:
print('Mention Bien')
elif note >= 15 and note < 18:
print('Mention Très Bien')
else note >= 18 :
print('Mention Excellence')
##### Code B
note = 9
if note < 10:
print('Refusé')
elif note >= 10 and note < 15:
print('Mention Bien')
elif note >= 15 and note < 18:
print('Mention Très Bien')
else:
print('Mention Excellence')
##### Code C
note = 9
if note < 10:
print('Refusé')
elif note >= 10 and note < 15:
print('Mention Bien')
elif note >= 15 and note < 18:
print('Mention Très Bien')
else:
print('Mention Excellence')

x = 4Combien vaut x à la fin du programme ?
if x > 8:
x = x + 12
if x >= 0 and x <= 10:
x = x - (x + 2)

x = 6Combien vaut x à la fin du programme ?
if x > 4:
x = x + 12
if x >= 10 and x <= 20:
x = x - (x + 2)
else:
x += 5

x = 6Qu'est-ce qu'affiche ce programme ?
y = 5
if x*y > 30 or x+y <= 11:
x += 10
if x >= 10 and x <= 20:
y -= 3
else:
x += 5
print (x+y)

- taux_tva = 20
- type_achat = 'bien'
- elif type_achat == 'bien':
- if type_achat == 'service':
- taux_tva = 5.5
- print(prix_ttc)
- prix_ht = 40
- prix_ttc = prix_ht + (prix_ht * taux_tva / 100)

- if True:
- print('L')
- print('H')
- if True:
- if True:
- print('L')
- if True:
- print('E')
- if True:
- print('o')
Est-il possible de tester plusieurs conditions en même temps ?
Bien sûr ! Dans le cas où vous souhaitez tester plusieurs conditions en même temps il faut séparer les conditions par un connecteur logique (« and » ou « or »).
if (x >= a) and (x <= b):
Est-ce qu'un else peut aller avec plusieurs if ?
Non, un else est systématiquement attaché au seul if au-dessus de lui qui n'a pas de else et dont l'indentation correspond.
Si vous voulez construire un ensemble de if avec un else pour une action alternative par défaut, vous devriez peut-être réfléchir à l'utilisation de elif.
Pour faire ce test :
Le else n'est relié qu'au dernier if, donc en sortie on aura « Refusé » car 9 est plus petit que 10. Mais également « Mention Excellence » car 9 n'est pas compris dans l'intervalle [15, 18[.
On écrira donc plutôt :
Est-on obligé de mettre un else ?
Non, le else est optionnel.
Comment tester qu'une variable se trouve dans un intervalle ?
Si x est un entier, alors pour tester que x est compris dans l'intervalle [a , b] il faut écrire (les parenthèse ne sont pas obligatoires, mais permette une meilleure distinction des blocs) :
if (x >= a) and (x <= b):Si x est un entier, alors pour tester que x n'est pas compris dans l'intervalle [a , b] il faut écrire :
if (x < a) or (x > b):Il est également possible d'inverser le test avec l'utilisation de « not », toutefois le code perd en lisibilité et simplicité (ici les parenthèse sont nécessaires si on veut que le not inverse l'ensemble du test) :
if not (x >= a and x <= b):
Comment utiliser la constante mathématique pi dans un programme ?
En tête de code :
from math import pi as PICela inclut la constant pi du module math et dans votre programme, elle s'appelle PI.
- Quelle est la syntaxe de l'alternative (if … elif … else) ?
- Qu'est-ce que l'indentation ?
- Quels sont les opérateurs de comparaison ?
- Qu'est-ce que fait l'opérateur « not » ?
- Quels sont les connecteurs logiques ?
- Quelle est la différence entre = et == ?
Pas de résumé disponible pour l'instant. Mais vous pouvez le faire !