cours1 min de lecture

Instructions conditionnelles

Faire choisir un programme entre plusieurs chemins selon qu'une condition est vraie ou fausse.
programme

Introduction

Jusqu'ici, vos programmes exécutaient toutes les lignes, du début à la fin, sans choisir. Mais souvent, on veut qu'un programme se comporte différemment selon les circonstances : afficher « bienvenue » si la personne est majeure et « refus » sinon, indiquer « il fait froid » si la température descend sous 5 °C, etc.

Pour cela, Python possède les instructions conditionnelles : if, elif, else. Elles permettent au programme de prendre une décision au moment de son exécution.

La condition, ce qui est vrai ou faux

Une condition est une expression qui s'évalue à True (vrai) ou à False (faux). On la construit le plus souvent en comparant deux valeurs avec un opérateur de comparaison :

OpérateurSignificationExempleÉvaluation
==est égal à3 == 3True
!=est différent de3 != 5True
<est strictement inférieur à3 < 5True
>est strictement supérieur à3 > 5False
<=est inférieur ou égal à3 <= 3True
>=est supérieur ou égal à5 >= 3True
Pour comparer, on utilise deux signes égal : ==. Avec un seul signe =, on affecte une valeur. C'est l'erreur de débutant la plus fréquente.

L'instruction if — une seule branche

La forme la plus simple :

age = 18

if age >= 18:
    print("Vous êtes majeur")

Décodage ligne par ligne :

  • ligne 1 : la variable age reçoit la valeur 18 ;
  • ligne 3 : Python évalue age >= 18. C'est True, donc il exécute le bloc en dessous (indenté de 4 espaces) ;
  • ligne 4 : affichage de « Vous êtes majeur ».

Si on remplace age = 18 par age = 15, la condition age >= 18 vaut False, et le print n'est jamais exécuté. Le programme passe à la suite, comme si la ligne 4 n'existait pas.

L'indentation est obligatoire en Python. Le bloc qui dépend du if est décalé vers la droite (par convention, 4 espaces). Sans indentation, Python refuse d'exécuter le programme.

Qu'affiche : age = 16 ; if age >= 18: print('OK') ?

if … else … — deux chemins

Que se passe-t-il si on veut traiter aussi le cas où la condition est fausse ? On ajoute un else :

age = 15

if age >= 18:
    print("Vous êtes majeur")
else:
    print("Vous êtes mineur")

Avec age = 15, Python exécute uniquement le bloc else :

Vous êtes mineur

Avec age = 20, ce serait uniquement le bloc if. Exactement un des deux blocs est exécuté à chaque passage — jamais les deux, jamais aucun.

if … elif … else … — plusieurs chemins

Quand il y a plus de deux situations possibles, on enchaîne avec un ou plusieurs elif (contraction de else if) :

note = 13

if note >= 16:
    print("Très bien")
elif note >= 12:
    print("Bien")
elif note >= 10:
    print("Assez bien")
else:
    print("À retravailler")

Python teste les conditions dans l'ordre, de haut en bas, et s'arrête à la première qui est vraie. Pour note = 13 :

  1. note >= 16 ? Non.
  2. note >= 12 ? Oui → affiche "Bien" et sort de la structure.
  3. Les conditions elif et else suivants sont ignorés.
Avec note = 18, c'est la première branche qui se déclenche (>= 16) et les autres sont sautées — même si note >= 12 est aussi vrai. Première vraie gagne, fin de l'histoire.

Avec note = 11, qu'affiche le programme ci-dessus ?

Visualiser un if complet

Le schéma logique d'une instruction if/elif/else :

ouinonouinon

condition 1 ?

exécuter bloc 1

condition 2 ?

exécuter bloc 2

exécuter bloc else

sortir

Schéma d'une instruction conditionnelle

Exemple complet avec snippet

Un mini-programme de catégorisation de température :

⏵ Ctrl+↵ pour exécuter
Aucune exécution pour l'instant.

Modifiez la valeur de temperature pour observer quelle branche se déclenche. Essayez -5, 10, 22, 30.

Pièges courants

  • = au lieu de == dans la condition → erreur de syntaxe. La machine vous le dira tout de suite ; chez l'humain, c'est une habitude à prendre.
  • Oublier les : à la fin de la ligne if ou else → erreur de syntaxe.
  • Pas d'indentation ou indentation incohérente du bloc → erreur ou comportement inattendu. Toujours 4 espaces, jamais des tabulations mélangées.
  • Confondre elif et else. elif teste une nouvelle condition ; else attrape « tout le reste » sans condition.

Pour aller plus loin

On peut combiner plusieurs conditions avec and (et) et or (ou) :

age = 17
permis = False

if age >= 18 and permis:
    print("Peut conduire seul")
else:
    print("Pas encore !")

and exige que les deux conditions soient vraies. or se contente qu'au moins une soit vraie. Ce sera approfondi en NSI.