Les structures conditionnelles en Python

@joekakone

Joseph Konka @joekakone

03/03/2026 · 9 min

Prenez des décisions algorithmiques avec les structures if, elif et else. Découvrez l'importance capitale de l'indentation en Python, l'expression conditionnelle ternaire et le match/case de Python 3.10+.

Les structures conditionnelles en langage Python#

Par défaut, un script informatique s'exécute de manière linéaire : les instructions s'enchaînent séquentiellement de la première à la dernière ligne. Cependant, dans les applications réelles, le comportement du programme doit s'adapter dynamiquement en fonction des données traitées : ouvrir une session si le mot de passe est correct, accorder une réduction si le panier dépasse 100 €, ou bloquer une transaction suspecte.

C'est le rôle fondamental des structures conditionnelles (if, elif, else).


1. La syntaxe fondamentale : if, elif et else#

En Python, les blocs de code ne sont pas délimités par des accolades {} ou des mots-clés begin / end comme dans d'autres langages, mais par le caractère deux-points : suivi d'une indentation stricte (par convention, exactement 4 espaces).

flowchart TD
    A[Condition if vérifiée ?] -->|Oui| B[Exécuter le bloc if]
    A -->|Non| C[Condition elif vérifiée ?]
    C -->|Oui| D[Exécuter le bloc elif]
    C -->|Non| E[Exécuter le bloc else par défaut]
    B --> F[Suite du programme]
    D --> F
    E --> F

Structure complète#

age = int(input("Quel est votre age ? "))

if age >= 18:
    print("Vous etes majeur.")
    print("Acces complet autorise.")
elif age >= 16:
    print("Vous etes mineur sous reserve d'autorisation parentale.")
else:
    print("Acces restreint aux moins de 16 ans.")

[!CAUTION] L'indentation en Python n'est pas décorative : elle fait partie intégrante de la grammaire du langage ! Une indentation incohérente ou manquante provoquera immédiatement une erreur de syntaxe IndentationError.


2. Conditions imbriquées et aplatissement#

Il est possible d'imbriquer des blocs conditionnels à l'intérieur d'autres blocs. Toutefois, le Zen de Python nous rappelle que :

« Flat is better than nested » (Mieux vaut plat qu'imbriqué).

Préférez toujours l'utilisation d'opérateurs logiques (and, or) plutôt que d'accumuler des niveaux d'indentation excessifs :

# Approche imbriquée (lourde) :
if utilisateur_connecte:
    if est_administrateur:
        if a_cle_secrete:
            ouvrir_console()

# Approche aplatie et Pythonique (recommandée) :
if utilisateur_connecte and est_administrateur and a_cle_secrete:
    ouvrir_console()

3. L'expression conditionnelle ternaire#

Lorsque vous souhaitez assigner une valeur à une variable selon une condition simple, Python offre une syntaxe concise sur une seule ligne appelée opérateur ternaire :

\[\text{valeur} = \text{valeur\_si\_vrai} \textbf{ if } \text{condition} \textbf{ else } \text{valeur\_si\_faux}\]
moyenne = 14.5

# Syntaxe classique sur 4 lignes :
# if moyenne >= 10.0:
#     statut = "Admis"
# else:
#     statut = "Ajourné"

# Syntaxe ternaire Pythonique en une seule ligne :
statut = "Admis" if moyenne >= 10.0 else "Ajourne"
print(f"Statut de l'etudiant : {statut}")

4. Le filtrage par motif : match / case (Python 3.10+)#

Depuis Python 3.10, le langage propose une structure d'aiguillage moderne nommée Structural Pattern Matching via les mots-clés match et case. Elle remplace avantageusement les longues cascades de elif :

code_http = 404

match code_http:
    case 200:
        description = "Succes (OK)"
    case 301 | 302:
        description = "Redirection"
    case 400:
        description = "Requete incorrecte (Bad Request)"
    case 403:
        description = "Acces interdit (Forbidden)"
    case 404:
        description = "Ressource introuvable (Not Found)"
    case 500:
        description = "Erreur interne du serveur"
    case _:  # Cas par défaut (équivalent du default en C)
        description = "Code HTTP non gere"

print(f"Statut {code_http} : {description}")

5. Mise en pratique : Système d'attribution des mentions d'examen#

Concevons un script complet qui analyse une note sur 20, vérifie sa validité et détermine la mention académique officielle :

print("=== GESTIONNAIRE DE DELIBERATION DU JURY ===")

saisie = input("Entrez la note de l'etudiant (0 a 20) : ")
note = float(saisie)

# 1. Validation de l'intervalle
if not (0.0 <= note <= 20.0):
    print("Erreur critique : La note saisie doit etre comprise entre 0 et 20.")
else:
    # 2. Détermination de la mention
    if note >= 16.0:
        mention = "Tres Bien"
        decision = "Felicitation du jury"
    elif note >= 14.0:
        mention = "Bien"
        decision = "Admis"
    elif note >= 12.0:
        mention = "Assez Bien"
        decision = "Admis"
    elif note >= 10.0:
        mention = "Passable"
        decision = "Admis"
    elif note >= 8.0:
        mention = "Sans mention"
        decision = "Admis aux oraux de rattrapage"
    else:
        mention = "Ajourne"
        decision = "Refuse (Redoublement)"

    # 3. Affichage du verdict
    print("\n" + "-" * 40)
    print(f"Note finale : {note:.2f} / 20")
    print(f"Decision    : {decision}")
    print(f"Mention     : {mention}")
    print("-" * 40)

6. Défi d'application#

Écrivez un programme nommé tarification_cinema.py qui calcule le prix d'un billet de cinéma en fonction des critères suivants : - Moins de 12 ans : 5.00 € - Étudiant (entre 12 et 25 ans) : 7.50 € - Plein tarif (plus de 25 ans) : 10.50 € - Si la séance a lieu le mercredi, une remise spéciale de 2.00 € est accordée sur tous les tarifs.

Commentaires

Inscrivez-vous à une formation complète

Voir le catalogue