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 :
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