Else if en Python : comprendre et utiliser cette condition
Quand on automatise une tâche, il faut souvent prendre une décision parmi plusieurs possibilités : appliquer un tarif selon le montant d’une commande, attribuer une mention à une note ou choisir une action selon la valeur d’une cellule. En Python, la structure if, elif et else permet de gérer ces scénarios simplement.
Si vous connaissez déjà les formules conditionnelles d’Excel, vous retrouverez une logique familière : on teste une condition, puis on indique quoi faire si elle est vraie. La différence, c’est qu’en Python, on peut enchaîner autant de cas que nécessaire, sans transformer son code en formule interminable.
À quoi sert elif en Python ?
elif est l’abréviation de else if, c’est-à-dire « sinon, si ». Ce mot-clé permet de tester une nouvelle condition lorsque le if précédent est faux.
Une structure conditionnelle complète peut comporter trois éléments :
if: teste la première condition ;elif: teste une autre condition si les précédentes ne sont pas satisfaites ;else: exécute une action si aucun des tests précédents n’est vrai.
Imaginez une cellule Excel qui contient une note. Vous voulez afficher « À revoir » en dessous de 10, « Bien » entre 10 et 15, et « Très bien » à partir de 15. En Python, cela peut s’écrire ainsi :
note = 16if note < 10: print("À revoir")elif note < 15: print("Bien")else: print("Très bien")
Le programme commence par tester note < 10. Comme la valeur est 16, la condition est fausse. Il passe ensuite à elif note < 15, qui est également faux. Il arrive donc à else et affiche « Très bien ».
À noter : le mot-clé Python s’écrit elif, en un seul mot. Écrire else if comme dans certains autres langages provoquera une erreur de syntaxe.
La syntaxe à retenir
Voici le squelette général d’une structure conditionnelle avec plusieurs possibilités :
if condition_1: instruction_1elif condition_2: instruction_2elif condition_3: instruction_3else: instruction_par_defaut
Chaque condition se termine par deux-points (:). Les instructions qui lui sont associées sont indentées, généralement avec quatre espaces. En Python, l’indentation n’est pas un simple choix de mise en forme : elle indique au programme quels blocs d’instructions appartiennent à quelle condition.
Vous pouvez utiliser un seul elif, plusieurs, ou aucun. Le else est facultatif lui aussi. En revanche, une conditionnelle qui commence par elif doit toujours être précédée d’un if.
Voici un exemple sans else :
temperature = 28if temperature > 25: print("Pensez à vous hydrater.")
Si la température est de 25 degrés ou moins, le programme ne fait rien dans cette structure. C’est parfaitement valide : ajoutez un else seulement si vous avez réellement une action à effectuer dans les autres cas.
Exemple concret : appliquer une remise
Supposons qu’un site applique une remise selon le montant du panier : aucune remise en dessous de 50 €, 5 % à partir de 50 €, et 10 % à partir de 100 €. Une série de conditions rend la règle lisible :
montant = 120if montant >= 100: remise = 0.10elif montant >= 50: remise = 0.05else: remise = 0prix_final = montant * (1 - remise)print(f"Remise : {remise:.0%}")print(f"Montant à payer : {prix_final:.2f} €")
Avec un panier de 120 €, le premier test est vrai : la remise est de 10 %. Python n’évalue pas les blocs suivants. C’est un point important : dans une chaîne if/elif/else, un seul bloc est exécuté, le premier dont la condition est vraie.
L’ordre des tests compte donc. Si vous commencez par montant >= 50, un panier de 120 € remplira déjà cette condition. Python s’arrêtera là et appliquera 5 %, sans examiner le test des 100 €. Pour les seuils, il est souvent plus sûr de commencer par la valeur la plus élevée, comme dans l’exemple.
Utiliser plusieurs conditions
Une condition peut combiner plusieurs critères avec les opérateurs and et or. Par exemple, une commande peut bénéficier de la livraison gratuite si son montant atteint 75 € ou si le client possède un abonnement premium :
montant = 60client_premium = Trueif montant >= 75 or client_premium: print("Livraison gratuite")elif montant >= 40: print("Frais de livraison : 4,90 €")else: print("Frais de livraison : 7,90 €")
L’opérateur or signifie qu’au moins une des deux conditions doit être vraie. Avec and, les deux doivent l’être. Vous pouvez également regrouper des tests entre parenthèses pour rendre leur logique plus claire, notamment lorsque vous mélangez and et or.
Pour comparer une valeur, Python propose entre autres == (égal à), != (différent de), >, <, >= et <=. Attention à ne pas confondre =, qui affecte une valeur à une variable, et ==, qui vérifie si deux valeurs sont égales.
Exemple : attribuer une appréciation à une note
Les notes sont un bon cas d’usage pour les conditions en chaîne. Voici une version un peu plus détaillée que le premier exemple :
note = 13if note < 0 or note > 20: appreciation = "Note invalide"elif note < 10: appreciation = "Insuffisant"elif note < 12: appreciation = "Passable"elif note < 16: appreciation = "Bien"else: appreciation = "Très bien"print(appreciation)
Le premier test vérifie que la note se situe dans l’intervalle autorisé. Si elle est valide, les autres conditions sont évaluées dans l’ordre. Avec une note de 13, Python passe les tests « inférieur à 0 », « inférieur à 10 » et « inférieur à 12 », puis s’arrête sur « inférieur à 16 ».
Remarquez que les seuils sont écrits de manière croissante. Après avoir éliminé les notes inférieures à 12, il suffit de vérifier si la note est inférieure à 16 pour distinguer « Bien » de « Très bien ». Il n’est pas nécessaire de répéter une borne basse dans chaque condition.
Les erreurs courantes à éviter
Quelques pièges reviennent souvent lorsqu’on débute. Les connaître permet de gagner du temps — et d’éviter de chercher pendant vingt minutes pourquoi Python boude.
- Écrire
else ifau lieu deelif. En Python, la forme correcte est toujourselif condition:. - Oublier les deux-points. Chaque ligne
if,elifouelsedoit se terminer par:. - Mal indenter les instructions. Les blocs associés aux conditions doivent être décalés de façon cohérente. Évitez aussi de mélanger tabulations et espaces.
- Placer les conditions dans le mauvais ordre. Une condition générale placée trop tôt peut rendre les tests suivants inaccessibles.
- Utiliser plusieurs
ifsans le vouloir. Avec plusieursifindépendants, plusieurs blocs peuvent être exécutés. Avecifetelif, un seul bloc de la chaîne est retenu.
Cette dernière différence mérite un exemple. Dans le code suivant, les deux messages peuvent s’afficher :
age = 20if age >= 18: print("Majeur")if age >= 20: print("A au moins 20 ans")
Si vous remplacez le second if par elif, les deux tests feront partie d’une même chaîne et le second ne sera évalué que si le premier est faux. Comme une personne de 20 ans est déjà majeure, le premier bloc sera exécuté et le second sera ignoré. Le choix dépend donc du comportement recherché, pas d’une règle automatique à appliquer partout.
Quand préférer elif à des conditions imbriquées ?
Il est possible de placer une condition à l’intérieur d’une autre. On parle alors de conditions imbriquées. Cette approche peut être utile lorsque le second test n’a de sens que si le premier est validé, mais elle devient vite difficile à lire si l’indentation s’accumule.
Comparez cette structure :
if utilisateur_connecte: if utilisateur_admin: print("Accès au panneau d'administration") else: print("Accès standard")else: print("Veuillez vous connecter")
Elle est logique : le statut d’administrateur ne nous intéresse que si l’utilisateur est connecté. En revanche, lorsqu’il s’agit simplement de choisir une réponse parmi plusieurs cas comparables, une chaîne if/elif/else est souvent plus facile à parcourir.
Une bonne règle pratique : gardez une condition imbriquée lorsque les tests dépendent réellement les uns des autres. Si vous comparez plusieurs situations au même niveau, préférez elif.
Une astuce pour tester vos conditions
Lorsque vous écrivez une chaîne de conditions, testez les valeurs situées juste avant, exactement sur et juste après chaque seuil. Pour une règle qui change à 50 €, par exemple, essayez 49,99 €, 50 € et 50,01 €. Ces cas limites révèlent rapidement une erreur de comparaison entre > et >=.
Vous pouvez aussi afficher temporairement la valeur et le résultat du test pour comprendre le chemin emprunté par le programme :
montant = 50if montant > 50: print("Plus de 50 €")elif montant == 50: print("Exactement 50 €")else: print("Moins de 50 €")
Ici, la valeur de 50 ne passe pas le test montant > 50, mais elle satisfait le test montant == 50. Les signes de comparaison ne sont pas de petits détails décoratifs : ils définissent précisément les limites de votre règle.
À retenir pour écrire des conditions claires
elif permet d’ajouter un nouveau test après un if, sans créer plusieurs conditions indépendantes. Python examine les conditions de haut en bas et exécute le premier bloc dont le test est vrai. Si aucun test ne correspond, le bloc else sert de réponse par défaut, lorsqu’il est présent.
Pour produire un code facile à relire, choisissez des noms de variables explicites, ordonnez soigneusement vos seuils et vérifiez les valeurs limites. La logique est proche de celle d’une formule conditionnelle dans Excel, mais ici, chaque étape est visible et peut déclencher presque n’importe quelle instruction Python. Une fois ce réflexe acquis, vous pourrez l’utiliser aussi bien pour automatiser un petit calcul que pour piloter un script complet.