Les conditions en Python
C’est quoi une condition ?
Les conditions vont nous permettre de n’exécuter certains blocs de code que si une condition est vraie. Par exemple, on peut afficher un code secret uniquement si le mot de passe a la bonne valeur !
On va devoir définir un bloc de code, comme pour les boucles ; on va donc utiliser la même structure, un « :
» au début du bloc, et ensuite une indentation au début de chaque ligne. Par contre, on n’utilisera pas for
mais if
(en anglais, « si ») comme mot clé !
Les opérateurs de comparaisons généraux
Maintenant, il va falloir mettre quelque chose à la place de condition. On va donc utiliser des opérateurs de comparaisons : c’est une syntaxe spéciale qui va comparer deux variables (ou une variable et une valeur fixe), et renvoyer soit True, soit False : ils renvoient en fait des bool !
L’opérateur le plus utilisé est sans aucun doute ==,
l’égalité :
- Il marche pour tous les types de base (int, float, str)
- Il teste si les deux variables ont la même valeur
On peut aussi utiliser !=
, l’inégalité :
- Il fonctionne de manière similaire à l’égalité, si ce n’est qu’il teste si deux variables ont une valeur différente !
Attention ! Il est important de comparer des variables (ou des valeurs) de même type ! On peut comparer une str et un int, mais cela sera toujours False
, même si les deux ont « l’air » identique : « 1 » et 1 ne sont pas la même chose !
Les opérateurs de comparaisons numériques
Il existe d’autres opérateurs de comparaisons pour les comparaisons numériques : ils comparent aussi deux variables (ou une variable et une valeur), mais celles si doivent être de type int ou float (on peut comparer un int avec un float directement). Par contre, l’ordre est important !
Il en existe 2 :
- plus petit que, ou < : renvoie vrai si la valeur de GAUCHE est STRICTEMENT PLUS PETITE que la valeur de DROITE
- plus grand que, ou > : renvoie vrai si la valeur de GAUCHE est STRICTEMENT PLUS GRANDE que la valeur de DROITE
Attention, ces deux opérateurs testent STRICTEMENT, c’est à dire que si les deux valeurs sont égales, ils renverront False !
Ces deux opérateurs existent aussi en version non strictes : ils renvoient aussi vrai si les deux valeurs sont égales
- plus petit ou égal, ou <=: renvoie vrai si la valeur de GAUCHE est PLUS PETITE OU ÉGALE que la valeur de DROITE
- plus grand ou égal, ou >= : renvoie vrai si la valeur de GAUCHE est PLUS GRANDE OU ÉGALE que la valeur de DROITE
Else & Elif
Else (sinon) Elif (sinon si)
Souvent, on va avoir besoin d’exécuter du code si une condition est vraie, et un autre code si elle ne l’est pas, comme ceci :
C’est un peu long à écrire comme ça, et il y a beaucoup de redite (et en informatique, on n’aime pas se répéter, car c’est une grosse source de bugs, et ça prend du temps !).
On va donc utiliser une construction différente, le else
(en anglais : « sinon »), qu’on doit placer juste après notre bloc if
. Le else exécutera le code dans le bloc adapté si la condition du if est fausse.
En pratique, notre code de mot de passe sera celui ci :
Elif (sinon si)
Parfois on peut avoir, envie de vérifier une seconde condition seulement si la première n’est pas vrai. On utilisera alors le elif comme ceci :
Remarque ici que le nombre est inférieur à 4, donc on l’augmente de 1.
Il est ensuite égal à 4, mais le print ne s’effectuera pas puisque cette condition n’est vérifiée que dans le cas où le premier if n’est pas vrai.
And, Or & Not
Combiner plusieurs opérateurs
Il peut arriver que l’on ai besoin de rassembler plusieurs opérateurs de comparaisons entre eux, le plus souvent avec les opérateurs numériques.
L’opérateur le plus fréquent est and
:
- Il permet d’utiliser deux conditions
- Il renvoie
True
si les deux conditions sont vraies, sinon il renvoieFalse
Il est souvent utilisé pour faire des plages de validité comme dans l’exemple
- …ou encore pour vérifier que deux conditions sont respectées.
Il existe aussi l’opérateur or
, similaire à and
:
- Il permet d’utiliser deux conditions
- Il renvoie
True
si au moins une des deux conditions est vraie - Utilisé surtout si on veut avoir plusieurs valeurs possibles (par exemples plusieurs mots de passes secrets)
On peut combiner plusieurs or
(ou plusieurs and
) bien sûr :
if mode == "DEBUG" or nom == "SuperAnim" and motdepasse == "JaimeLeCode":
À noter que lorsque des and et des or sont utilisés dans une même condition, les and sont toujours évalués avant les or.
Not
Nous avons vu comment vérifier qu’une condition est vraie, mais parfois on peut avoir envie de vérifier qu’une condition n’est pas vraie, qu’elle soit strictement fausse.