k Les bases de la programmation en Python

Les bases de la programmation en Python

II - Programmer en Python

2/Structures conditionnelles

Introduction

Les structures de contrôle conditionnelles (ou plus simplement conditions) vont nous permettre d’exécuter différents blocs de code selon qu’une condition spécifique soit vérifiée ou pas.

Nous allons très souvent utiliser les conditions avec des variables : selon la valeur stockée dans une variable, nous allons vouloir exécuter un bloc de code plutôt qu’un autre. Python nous fournit les structures conditionnelles suivantes :

  • La condition if (“si”) ;
  • La condition if…else (“si…sinon”) ;
  • La condition if…elif…else (“si…sinon si… sinon”).
  • Nous allons étudier et comprendre l’intérêt de chacune de ces conditions dans la suite de cette leçon. Avant de les étudier, cependant, nous allons devoir présenter un nouveau type d’opérateurs : les opérateurs de comparaison qui vont être au centre de nos conditions.

    Les opérateurs de comparaisons

    Comme je l’ai précisé plus haut, nous allons souvent construire nos conditions autour de variables : selon la valeur d’une variable, nous allons exécuter tel bloc de code ou pas.

    Pour pouvoir faire cela, nous allons comparer la valeur d’une variable à une certaine autre valeur donnée et selon le résultat de la comparaison exécuter un bloc de code ou pas. Pour comparer des valeurs, nous allons devoir utiliser des opérateurs de comparaison.

    Voici ci-dessous les différents opérateurs de comparaison disponibles en Python ainsi que leur signification :

    Opérateur Définition
    "==" "Permet de tester l’égalité en valeur et en type"
    "!=" "Permet de tester la différence en valeur ou en type"
    "<" "Permet de tester si une valeur est strictement inférieure à une autre"
    ">" "Permet de tester si une valeur est strictement inferieure à une autre"
    "<=" "Permet de tester si une valeur est inférieure ou égale à une autre"
    ">=" "Permet de tester si une valeur est supérieure ou égale à une autre"

    Notez bien ici que ces opérateurs ne servent pas à indiquer à Python que telle valeur est supérieure, égale, inférieur ou différente à telle autre valeur. Lorsqu’on utilise un opérateur de comparaison, on demande au contraire à Python de tester si telle valeur est supérieure, égale, inférieur ou différente à telle autre valeur. Python va donc comparer les deux valeurs et toujours renvoyer un booléen : True si la comparaison est vérifiée ou False dans le cas contraire.

    Notez également que les opérateurs de comparaison d’égalité et de différence testent l’égalité et la différence à la fois sur les valeurs et sur les types. Ainsi, si on demande à Python de tester l’égalité entre la chaine de caractères “4” et le chiffre 4, celui-ci renverra False puisque pour lui ces deux valeurs ne sont pas égales.

    Regardez plutôt les exemples suivants pour vous en persuader :

    Retenez ici que c’est cette valeur booléenne renvoyée par le Python à l’issue de toute comparaison que nous allons utiliser pour faire fonctionner nos conditions.

    La condition if en Python

    La structure conditionnelle if est une structure de base qu’on retourne dans de nombreux langages de script. Cette condition va nous permettre d’exécuter un code si (et seulement si) une certaine condition est vérifiée.

    On va en fait passer une expression à cette condition qui va être évaluée par Python. Cette expression sera souvent une comparaison explicite (une comparaison utilisant les opérateurs de comparaison) mais pas nécessairement.

    Si Python évalue l’expression passée à True, le code dans la condition if sera exécuté. Dans le cas contraire, le code dans if sera ignoré.Prenons immédiatement un premier exemple afin de nous familiariser avec le fonctionnement et la syntaxe de cette condition :

    créons ici deux conditions if. Comme vous pouvez le voir, la syntaxe générale d’une condition if est if condition : code à exécuter. Pensez bien à indiquer le : et à bien indenter le code qui doit être exécuté si la condition est vérifiée sinon votre condition ne fonctionnera pas.

    Dans le premier if, nous demandons à Python dévaluer la comparaison x > y. Comme notre variable x stocke 8 et que notre variable y stocke 4, Python valide cette comparaison et renvoie True. La condition if reçoit True et le code qu’elle contient est exécuté.

    Dans notre deuxième if, on demande cette fois-ci à Python de nous dire si le contenu de x est égal au chiffre 5. Ce n’est pas le cas et donc Python renvoie False et le code dans ce if n’est donc pas exécuté.

    Au final, vous pouvez retenir que toute expression qui suit un if va être évaluée par Python et que Python renverra toujours soit True, soit False. Nous n’avons donc pas nécessairement besoin d’une comparaison explicite pour faire fonctionner un if.

    Pour comprendre cela vous devez savoir qu’en dehors des comparaisons Python évaluera à True toute valeur passée après if à l’exception des valeurs suivantes qui seront évaluées à False :

  • La valeur 0 (et 0.0) ;
  • La valeur None ;
  • Les valeurs chaine de caractères vide ””, liste vide [], dictionnaire vide {} et tuile vide ().
  • La condition if… else en Python

    Avec la condition if, nous restons relativement limités puisque cette condition nous permet seulement d’exécuter un bloc de code si que le résultat d’un test soit évalué à True.

    La structure conditionnelle if…else (« si… sinon » en français) est plus complète que la condition if puisqu’elle nous permet d’exécuter un premier bloc de code si un test renvoie True ou un autre bloc de code dans le cas contraire.

    La syntaxe d’une condition if…else va être la suivante :

    Ici, on demande dans notre première condition à Python d’évaluer si la valeur de x est différente du chiffre 5 ou pas. Si c’est le cas, Python renverra True (puisqu’on lui demande ici de tester la différence et non pas l’égalité) et le code du if sera exécuté. Dans le cas contraire, c’est le code du else qui sera exécuté.

    Notre deuxième condition fait exactement le même travail mais cette fois si on compare la valeur de y à 5.

    Notez bien ici qu’on n’effectuera jamais de test dans un else car le else est par définition censé prendre en charge tous les cas non pris en charge par le if.

    La condition if… elif… else en Python

    La condition if…elif…else (« si…sinon si…sinon ») est une structure conditionnelle encore plus complète que la condition if…else qui vannons permettre cette fois-ci d’effectuer autant de tests que l’on souhaite et ainsi de prendre en compte le nombre de cas souhaité.

    En effet, nous allons pouvoir ajouter autant de elif que l’on souhaite entre le if de départ et le else de fin et chaque elif va pouvoir posséder son propre test ce qui va nous permettre d’apporter des réponses très précises à différentes situations.

    Il faut cependant faire attention à un point en particulier lorsqu’on utilise une structure Python if… elif… else : le cas où plusieurs elif possèdent un test évalué à True par Python. Dans ce cas là, vous devez savoir que seul le code du premier elif (ou du if si celui-ci est évalué à True) va être exécuté. En effet, Python sort de la structure conditionnelle dans son ensemble sans même lire ni tester la fin de celle-ci dès qu’un cas de réussite à été rencontré et que son code a été exécuté.