Quand un script doit choisir entre plusieurs possibilités, une simple instruction if ne suffit pas toujours. Imaginez un programme qui classe une note, affiche un tarif selon l’âge ou décide quoi faire en fonction d’une valeur lue dans un fichier Excel. Il faut alors tester plusieurs conditions, dans un ordre précis. C’est exactement le rôle de elif en Python.
Dans cet article, nous allons voir comment fonctionne cette instruction, comment l’utiliser sans alourdir votre code et quelles erreurs éviter. Les exemples sont directement réutilisables dans vos scripts, notamment pour automatiser le traitement de données.
À quoi sert elif en Python ?
elif est la contraction de else if, que l’on peut traduire par « sinon, si ». Cette instruction permet de tester une nouvelle condition lorsque la condition précédente n’est pas vérifiée.
Une structure conditionnelle complète peut contenir un if, plusieurs elif et, éventuellement, un else :
if condition_1: # Instructions si condition_1 est vraieelif condition_2: # Instructions si condition_1 est fausse et condition_2 vraieelif condition_3: # Instructions si les conditions précédentes sont fausses # et condition_3 est vraieelse: # Instructions si aucune condition n'est vérifiée
Python examine les conditions de haut en bas. Dès qu’il en trouve une qui est vraie, il exécute le bloc correspondant et ignore les suivants. Le mot-clé elif ne peut donc pas s’utiliser seul : il doit suivre un if ou un autre elif.
Un premier exemple simple
Commençons avec un exemple de classement de note. Le script attribue une mention selon le résultat obtenu :
note = 15if note >= 16: mention = "Très bien"elif note >= 14: mention = "Bien"elif note >= 12: mention = "Assez bien"elif note >= 10: mention = "Admis"else: mention = "Non admis"print(mention)
Avec une note de 15, Python teste d’abord note >= 16. La réponse est fausse. Il passe alors à note >= 14, qui est vraie : le programme affiche « Bien » et ne vérifie pas les conditions suivantes.
L’ordre est important. Si vous testez note >= 10 avant note >= 16, une note de 18 sera déjà considérée comme « Admis ». Le programme ne regardera jamais les catégories plus élevées. Pour des intervalles comme ceux-ci, commencez généralement par le seuil le plus haut, puis descendez.
Comprendre l’ordre des conditions
Une série de if indépendants ne se comporte pas comme une chaîne de if, elif et else. Avec plusieurs if, chaque condition est évaluée, même si une condition précédente était vraie :
temperature = 32if temperature >= 30: print("Il fait chaud.")if temperature >= 20: print("La température est agréable.")
Ce script affiche les deux messages. En remplaçant le second if par elif, un seul bloc sera exécuté :
temperature = 32if temperature >= 30: print("Il fait chaud.")elif temperature >= 20: print("La température est agréable.")
À vous de choisir : faut-il appliquer plusieurs règles à la même donnée, ou sélectionner une seule réponse parmi plusieurs ? Dans le premier cas, plusieurs if peuvent convenir. Dans le second, la chaîne if / elif / else est souvent plus claire.
Un exemple concret pour traiter des données
Supposons que vous récupériez le montant d’une commande dans un tableau et que vous souhaitiez lui associer des frais de livraison. Une instruction conditionnelle permet de définir une règle lisible :
montant = 68if montant >= 100: livraison = 0elif montant >= 50: livraison = 4.90else: livraison = 8.90print(f"Frais de livraison : {livraison:.2f} €")
Pour une commande de 68 €, Python ignore le premier bloc, exécute celui de elif et fixe les frais à 4,90 €. Pour 120 €, les frais sont gratuits. Pour 35 €, aucun des deux seuils n’est atteint : le bloc else s’applique.
Ce type de logique se glisse facilement dans un script de traitement de fichier CSV ou Excel. Vous pouvez, par exemple, parcourir une liste de montants, attribuer une catégorie à chacun, puis exporter les résultats. L’instruction elif ne lit pas le fichier à votre place, mais elle prend en charge une partie essentielle du traitement : appliquer la bonne règle à chaque ligne.
Les opérateurs utiles avec elif
Une condition peut comparer une valeur, vérifier une égalité ou combiner plusieurs critères. Voici quelques opérateurs courants :
==vérifie si deux valeurs sont égales ;!=vérifie si deux valeurs sont différentes ;>et<comparent deux valeurs ;>=et<=incluent aussi l’égalité ;andexige que deux conditions soient vraies ;oraccepte qu’au moins une condition soit vraie.
Par exemple, un programme peut appliquer un tarif réduit aux personnes de moins de 18 ans ou de 65 ans et plus :
age = 42if age < 18: tarif = "Réduit"elif age >= 65: tarif = "Réduit"else: tarif = "Plein"print(tarif)
Si vous devez vérifier plusieurs éléments dans un même cas, regroupez-les avec or :
if jour == "samedi" or jour == "dimanche": type_jour = "week-end"elif jour == "vendredi": type_jour = "fin de semaine"else: type_jour = "jour ouvré"
Une condition composée avec and pourrait, elle, vérifier qu’une valeur se situe dans une plage :
if note >= 10 and note < 14: resultat = "Admis sans mention"
Python permet aussi d’écrire ce test de façon plus naturelle :
if 10 <= note < 14: resultat = "Admis sans mention"
Quand utiliser else ?
else n’est pas obligatoire. Ajoutez-le lorsque vous souhaitez prévoir une action par défaut si aucun if ou elif n’a été vérifié. Il ne comporte pas de condition :
if statut == "payée": message = "Commande confirmée"elif statut == "en attente": message = "Paiement à vérifier"else: message = "Statut inconnu"
Ici, le bloc else couvre aussi les valeurs inattendues, comme une faute de frappe dans les données. C’est pratique, mais le message choisi dépend de votre besoin : dans un script important, mieux vaut parfois signaler explicitement les valeurs inconnues plutôt que les traiter comme un cas ordinaire.
À l’inverse, si vous avez déjà traité tous les cas utiles et qu’aucune action n’est nécessaire par défaut, vous pouvez laisser la structure sans else.
Les erreurs fréquentes à éviter
- Oublier les deux-points. Chaque ligne introduisant un bloc —
if,elifouelse— se termine par:. - Mal indenter les instructions. Les lignes du bloc doivent être décalées de façon cohérente, généralement avec quatre espaces. En Python, l’indentation détermine la structure du programme.
- Écrire
else ifau lieu deelif. En Python, le mot-clé est bienelif, en un seul bloc. - Mettre une condition après
else.elsen’accepte aucune condition. Pour tester un autre cas, utilisez un nouveauelifavant leelse. - Oublier l’ordre des seuils. Une condition générale placée trop tôt peut rendre les conditions suivantes inaccessibles.
- Confondre
=et==. Le premier affecte une valeur à une variable ; le second compare deux valeurs.
Une erreur d’indentation peut notamment produire IndentationError, tandis qu’un elif mal placé peut entraîner une erreur de syntaxe. Si votre éditeur colore le code, vérifiez que les blocs sont alignés et que chaque instruction se trouve sous le bon niveau.
Éviter les chaînes de conditions trop longues
Quelques elif rendent généralement le code facile à suivre. En revanche, une longue succession de cas précis peut devenir difficile à maintenir. Si vous comparez une même variable à de nombreuses valeurs, un dictionnaire peut parfois être plus adapté :
messages = { "OK": "Traitement réussi", "ATTENTE": "Traitement en cours", "ERREUR": "Une vérification est nécessaire"}statut = "ATTENTE"message = messages.get(statut, "Statut inconnu")print(message)
Pour des conditions fondées sur des intervalles, comme les notes ou les tarifs, if et elif restent souvent plus lisibles. Pour choisir une action selon une valeur exacte parmi beaucoup de possibilités, le dictionnaire évite de répéter la même variable dans chaque condition.
Pour certains scénarios où l’on compare une valeur à de nombreux cas fixes, Python propose aussi match, disponible à partir de Python 3.10. Il ne remplace pas systématiquement elif : choisissez la forme qui explique le mieux la règle appliquée.
À retenir pour vos scripts
elif vous permet d’ajouter des possibilités à une condition if sans exécuter plusieurs blocs pour une même chaîne de tests. Python lit les conditions dans l’ordre et s’arrête au premier résultat vrai. Placez donc les cas de manière réfléchie, utilisez else pour définir un comportement par défaut et gardez une indentation régulière.
La prochaine fois que votre script doit classer une donnée, appliquer un tarif ou afficher un message selon plusieurs cas, commencez par écrire les règles en français. Puis traduisez-les une par une avec if, elif et, si nécessaire, else. Une logique claire au départ, c’est aussi moins de surprises quand vous automatiserez votre prochain tableau.
