Prépa Python

Basique — chapitre 12 sur 54

Conditions : if, elif, else

Structures conditionnelles et opérateurs booléens

60 min10 évaluations

Après les types et les opérateurs, il est temps de faire réagir nos programmes. Les conditions permettent à Python de choisir quoi exécuter selon la valeur des données. C'est le premier vrai pas vers des programmes intelligents.

Pourquoi des conditions ?

Un programme sans condition fait toujours la même chose, quelle que soit la situation. Les conditions permettent de brancher différemment selon les valeurs.

Exemple concret : déterminer si un apprenant a validé un examen.

python
note = 14
if note >= 10:
    print("Admis")
else:
    print("Recalé")

En français : « si la note est supérieure ou égale à 10, alors afficher 'Admis', sinon afficher 'Recalé' ».

Les opérateurs de comparaison (rappel)

Déjà vus au chapitre 2, ces opérateurs renvoient toujours un booléen (True ou False) :

Opérateur Signification
== Égal à
!= Différent de
< Strictement inférieur
> Strictement supérieur
<= Inférieur ou égal
>= Supérieur ou égal

La structure if

La forme la plus simple : exécuter un bloc seulement si une condition est vraie.

python
temperature = 35
if temperature > 30:
    print("Il fait chaud !")
    print("Pensez à bien vous hydrater.")

Anatomie d'un if

python
if <condition>:       ← deux-points obligatoires en fin de ligne
    <instruction 1>   ← indentation obligatoire (4 espaces)
    <instruction 2>
<suite du programme>  ← pas d'indentation : hors du if

Trois points critiques pour le TOSA :

  1. Les deux-points : en fin de ligne du if — obligatoires.
  2. L'indentation du bloc — obligatoire et cohérente (4 espaces par convention).
  3. Quand l'indentation s'arrête, c'est la fin du bloc if.

La structure if / else

On ajoute un bloc alternatif qui s'exécute si la condition est fausse.

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

Le else n'a pas de condition — c'est le « tout le reste des cas ».

La structure if / elif / else

Pour enchaîner plusieurs conditions qui s'excluent mutuellement, on utilise elif (contraction de else if).

python
note = 14

if note >= 16:
    mention = "Très bien"
elif note >= 14:
    mention = "Bien"
elif note >= 12:
    mention = "Assez bien"
elif note >= 10:
    mention = "Passable"
else:
    mention = "Insuffisant"

print("Mention :", mention)

Règles de l'exécution

Python évalue les conditions une à une, du haut vers le bas, et exécute le premier bloc dont la condition est vraie. Les suivants sont ignorés.

Dans l'exemple ci-dessus, avec note = 14 :

  1. note >= 16 → False, on passe au suivant
  2. note >= 14 → True → on exécute ce bloc et on sort de la structure
  3. Les elif et else suivants ne sont pas évalués

if / else / elif : que choisir ?

Cas Structure
Exécuter du code seulement dans un cas if seul
Deux cas mutuellement exclusifs if / else
Plus de deux cas mutuellement exclusifs if / elif / else

Combiner plusieurs conditions : and, or, not

Déjà vus au chapitre 2, ils sont omniprésents dans les conditions.

python
age = 25
permis = True

if age >= 18 and permis:
    print("Peut conduire")
else:
    print("Ne peut pas conduire")
python
jour = "dimanche"
ferie = False

if jour == "dimanche" or ferie:
    print("Pas de travail aujourd'hui")
else:
    print("Journée de travail")
python
connecte = False
if not connecte:
    print("Veuillez vous connecter")

Court-circuit — rappel

Python évalue and et or en court-circuit. Cela permet notamment d'éviter des erreurs :

python
# Éviter une division par zéro
diviseur = 0
if diviseur != 0 and 10 / diviseur > 1:
    print("OK")
else:
    print("Impossible (diviseur = 0 ou quotient trop petit)")

Si on avait inversé les deux conditions, on aurait eu une ZeroDivisionError.

Conditions imbriquées

On peut mettre un if à l'intérieur d'un autre if. L'indentation devient alors plus profonde.

python
age = 25
permis = True
a_voiture = True

if age >= 18:
    if permis:
        if a_voiture:
            print("Peut conduire sa voiture")
        else:
            print("Peut conduire, mais n'a pas de voiture")
    else:
        print("Majeur mais pas de permis")
else:
    print("Trop jeune")

Cas particuliers : la « véracité implicite »

En Python, on peut tester directement une valeur sans la comparer explicitement. Python la convertit en booléen selon les règles vues au chapitre 1.

python
nom = ""
if nom:
    print("Bonjour", nom)
else:
    print("Vous n'avez pas entré de nom")

Ici, if nom: équivaut à if nom != "":. Quand nom est vide, il est considéré comme False.

Rappel des valeurs falsy (considérées comme fausses) :

  • Nombres nuls : 0, 0.0
  • Chaîne vide : ""
  • Listes/tuples/dicts/sets vides : [], (), {}
  • None

Tout le reste est truthy (vrai).

python
liste = []
if liste:
    print("Il y a des éléments :", liste)
else:
    print("La liste est vide")

L'expression ternaire (bonus utile)

Quand on veut juste choisir entre deux valeurs selon une condition, on peut condenser un if/else sur une seule ligne.

Syntaxe : valeur_si_vrai if condition else valeur_si_faux

python
age = 17
statut = "majeur" if age >= 18 else "mineur"
print(statut)

Équivalent à :

python
if age >= 18:
    statut = "majeur"
else:
    statut = "mineur"

L'expression ternaire est utile pour les affectations simples — à ne pas abuser pour ne pas nuire à la lisibilité.


Exercices

quiz 01.04.q1réponse unique
Que s'affiche-t-il ?
x = 10
if x > 5:
    print("A")
elif x > 8:
    print("B")
else:
    print("C")
quiz 01.04.q2réponse unique
Que s'affiche-t-il ?
x = 0
if x:
    print("vrai")
else:
    print("faux")
quiz 01.04.q3réponse unique
Quelle est l'erreur dans ce code ?
x = 5
if x > 0
    print("positif")
quiz 01.04.q4réponse unique
Que renvoie ce code ?
age = 25
if age >= 18 and age < 30:
    print("Jeune adulte")
elif age >= 30:
    print("Adulte")
else:
    print("Mineur")
quiz 01.04.q5réponse unique
Que vaut resultat après exécution ?
x = 7
resultat = "pair" if x % 2 == 0 else "impair"
quiz 01.04.q6réponse unique
Quelle affirmation est VRAIE ?
quiz 01.04.q7réponse unique
Que s'affiche-t-il ?
nom = "   "
if nom:
    print("Bonjour")
else:
    print("Nom manquant")

exercice 01.04.x1à faire

Rangez dans la variable categorie la catégorie qui correspond à l'âge age :

  • Moins de 3 ans : bébé
  • De 3 à 11 ans : enfant
  • De 12 à 17 ans : adolescent
  • De 18 à 64 ans : adulte
  • 65 ans et plus : senior

exercice 01.04.x2à faire

Écrivez un programme qui vérifie que le mot de passe mdp remplit les critères suivants :

  1. Longueur minimale : 8 caractères.
  2. Contient au moins un caractère qui n'est pas une lettre (chiffre ou symbole).
  3. Contient au moins une lettre majuscule.

Si tout est bon, affichez Mot de passe OK. Sinon, affichez chaque critère non rempli sur sa propre ligne, dans cet ordre : moins de 8 caractères, pas de chiffre ni de symbole, pas de majuscule.

Indice : les méthodes de chaînes suffisent. isalpha() dit si une chaîne ne contient que des lettres ; une chaîne sans majuscule est égale à sa version en minuscules.


exercice 01.04.x3à faire

Un magasin applique des remises selon le montant d'achat :

  • Moins de 50 € : aucune remise.
  • De 50 à 99 € : 5 % de remise.
  • De 100 à 199 € : 10 % de remise.
  • 200 € et plus : 15 % de remise.

Calculez dans la variable prix le prix à payer pour le montant montant, remise déduite.


À retenir