Vous avez une liste de ventes, un stock à surveiller ou des résultats à classer ? Dans chacun de ces cas, votre programme doit prendre une décision selon une condition. En Python, l’instruction if permet justement de lui indiquer quoi faire : « si cette situation est vraie, exécute ces instructions ». C’est un peu l’équivalent d’une formule SI dans Excel, mais avec toute la souplesse du code.
Petite précision avant de commencer : malgré l’expression courante « boucle if », if n’est pas une boucle. Elle ne répète pas une action ; elle choisit un chemin à suivre. Les boucles, comme for et while, servent à répéter des instructions. Cette distinction vous évitera quelques nœuds au cerveau — et dans votre code.
À quoi sert une condition en Python ?
Une condition est une question à laquelle Python répond par True (vrai) ou False (faux). Par exemple : une quantité est-elle inférieure au seuil de réapprovisionnement ? Un client a-t-il dépassé un montant d’achat ? Si la réponse est vraie, votre programme peut afficher un message ou effectuer un calcul particulier.
Imaginez un tableau de suivi des ventes. Vous souhaitez signaler les produits dont le stock est inférieur à 10. En Python, la structure de base s’écrit ainsi :
stock = 7if stock < 10: print("Stock à réapprovisionner")
Python vérifie si stock < 10 est vrai. Comme la valeur de stock est 7, il exécute le bloc placé sous la condition et affiche le message. Si le stock était de 12, le bloc ne serait pas exécuté.
La syntaxe de if en Python
Une condition simple suit toujours le même modèle :
if condition: instructions
Deux détails sont essentiels. D’abord, les deux-points : terminent la ligne de condition. Ensuite, les instructions à exécuter doivent être décalées vers la droite : on appelle ce décalage l’indentation. En Python, elle fait partie de la syntaxe. Utilisez généralement quatre espaces pour chaque niveau d’indentation et évitez de mélanger espaces et tabulations.
Voici une autre situation concrète : vérifier si une commande peut bénéficier de la livraison offerte à partir de 50 euros.
montant = 63if montant >= 50: print("La livraison est offerte")
Le symbole >= signifie « supérieur ou égal à ». Python compare le montant au seuil, puis exécute l’instruction si la condition est vraie.
Les opérateurs de comparaison à connaître
Pour écrire vos conditions, vous comparerez souvent des nombres ou des textes. Les principaux opérateurs sont :
==: égal à ;!=: différent de ;>: strictement supérieur à ;<: strictement inférieur à ;>=: supérieur ou égal à ;<=: inférieur ou égal à.
Attention à ne pas confondre = et ==. Le premier attribue une valeur à une variable : prix = 25. Le second vérifie si deux valeurs sont égales : prix == 25. Cette confusion est l’un des classiques du débutant. La bonne nouvelle, c’est qu’après quelques essais, le réflexe vient vite.
Vous pouvez aussi comparer du texte. Par exemple, si une cellule importée depuis un fichier contient le statut « payé », votre programme peut adapter son traitement :
statut = "payé"if statut == "payé": print("La commande peut être expédiée")
La comparaison de texte tient compte des majuscules et des minuscules : "Payé" et "payé" ne sont pas identiques pour Python. Si vos données proviennent d’un tableur, elles peuvent contenir des variations de saisie. Il est alors utile de les uniformiser avant de les comparer.
Prévoir un autre cas avec else
Une condition if peut être complétée par else. Le bloc else s’exécute lorsque la condition précédente est fausse. Il permet donc de traiter les deux possibilités sans répéter le test.
stock = 3if stock >= 10: print("Stock suffisant")else: print("Stock à réapprovisionner")
Ici, le programme affiche « Stock à réapprovisionner », car 3 n’est pas supérieur ou égal à 10. Le bloc else ne nécessite pas de condition : il représente simplement le cas contraire. Comme pour if, n’oubliez ni les deux-points ni l’indentation.
Gérer plusieurs possibilités avec elif
Parfois, une décision ne se limite pas à deux options. Vous pouvez alors ajouter une ou plusieurs branches elif, contraction de « else if ». Python les teste dans l’ordre et exécute le premier bloc dont la condition est vraie.
note = 14if note >= 16: print("Très bien")elif note >= 10: print("Résultat satisfaisant")else: print("Résultat insuffisant")
Avec une note de 14, le premier test est faux, mais le deuxième est vrai : le programme affiche « Résultat satisfaisant ». Dès qu’une branche correspond, les suivantes ne sont pas examinées. L’ordre des conditions compte donc. Si vous placiez le test note >= 10 avant note >= 16, une note de 17 serait déjà classée dans la deuxième catégorie.
Cette structure est pratique pour appliquer des tarifs, répartir des scores en catégories ou définir différents niveaux d’alerte. Elle remplace une série de tests indépendants par un choix lisible et ordonné.
Combiner plusieurs conditions
Les mots and et or permettent de réunir plusieurs tests. Avec and, toutes les conditions doivent être vraies. Avec or, il suffit qu’au moins une condition le soit.
age = 32abonnement_actif = Trueif age >= 18 and abonnement_actif: print("Accès autorisé")
Dans cet exemple, l’accès est accordé seulement si la personne a au moins 18 ans et possède un abonnement actif. Pour une réduction accordée aux clients fidèles ou aux nouveaux inscrits, vous pourriez employer or :
client_fidele = Falsenouveau_client = Trueif client_fidele or nouveau_client: print("Une offre est disponible")
Enfin, not inverse une condition. Par exemple, not abonnement_actif est vrai lorsque la variable vaut False. Pour garder un code facile à relire, donnez des noms explicites à vos variables : est_en_stock parle davantage que x.
Vérifier la présence d’une valeur
Pour savoir si une valeur apparaît dans une liste, l’opérateur in est souvent plus clair qu’une série de comparaisons. Supposons que votre fichier contienne plusieurs catégories de produits à surveiller :
categories_a_surveiller = ["informatique", "mobilier", "papeterie"]categorie = "mobilier"if categorie in categories_a_surveiller: print("Cette catégorie est suivie")
Vous pouvez utiliser not in pour vérifier qu’une valeur est absente. Cette méthode est utile lorsque vous contrôlez des statuts autorisés, des codes de produits ou des réponses saisies par un utilisateur.
Utiliser if avec les valeurs vides
Python peut tester directement certaines valeurs sans écrire de comparaison explicite. Une liste non vide est considérée comme vraie ; une liste vide, comme fausse. C’est pratique pour vérifier qu’une recherche a renvoyé des résultats.
resultats = ["Classeur A", "Classeur B"]if resultats: print("Des résultats ont été trouvés")else: print("Aucun résultat")
Le même principe s’applique notamment aux textes vides, à la valeur None et au nombre zéro. Cette écriture est concise, mais assurez-vous qu’elle exprime bien votre intention. Si vous cherchez précisément à savoir si une valeur vaut zéro, écrivez plutôt quantite == 0 : votre condition sera plus explicite pour les personnes qui liront le code.
Les erreurs fréquentes et comment les éviter
Quand une condition ne fonctionne pas, le problème vient souvent d’un détail de syntaxe ou d’une comparaison mal choisie. Voici les points à vérifier en priorité :
- Les deux-points sont-ils présents à la fin de la ligne
ifouelif? - Les instructions du bloc sont-elles correctement indentées ?
- Utilisez-vous
==pour comparer deux valeurs, plutôt que=? - Les valeurs comparées sont-elles du même type, par exemple un nombre avec un nombre ?
- Les tests dans vos branches
elifsont-ils placés dans le bon ordre ?
Un autre piège courant concerne les données importées d’un tableur. Le contenu d’une cellule qui ressemble à un nombre peut avoir été lu comme du texte. Comparer directement "12" à 10 ne donne pas le résultat attendu, car ces valeurs n’ont pas le même type. Il faut parfois convertir la donnée en nombre avant de la comparer.
Mettre en pratique avec un exemple complet
Pour réunir les notions vues, imaginons un petit contrôle de commandes. Les commandes de 100 euros ou plus ont droit à un avantage ; celles d’au moins 50 euros bénéficient de la livraison offerte ; les autres paient les frais de livraison.
montant = 72if montant >= 100: print("Avantage et livraison offerte")elif montant >= 50: print("Livraison offerte")else: print("Frais de livraison appliqués")
Avec un montant de 72 euros, Python ignore la première branche, exécute la deuxième et affiche « Livraison offerte ». Vous pourriez ensuite remplacer la valeur fixe par le montant lu dans un fichier ou saisi par un utilisateur. La logique conditionnelle resterait la même : seules les données changeraient.
Comme avec une formule SI dans Excel, le plus important est de définir clairement les cas à traiter. Commencez par écrire les règles en français, vérifiez qu’elles ne se chevauchent pas, puis traduisez-les en conditions Python. Une fois cette habitude prise, if devient un outil très naturel pour automatiser vos contrôles, classer des données et faire réagir vos programmes au bon moment.
