On a vu comment exécuter du code, le répéter, il ne nous manque maintenant plus qu’une notion fondamentale en informatique : les conditions ! Elles vont nous permettre de prendre des décisions, c’est à dire 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 tableaux ; 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é !
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é :
age = 13 nom = "Glorf" taille = 1.82 if age == 13: print("Bravo, tu peux t'inscrire en Teen 1 !") if nom == "Xefi": print("Tu es le maître de l'IA, bravo !!") if taille == 1.98: print("Tu es aussi grand que Michael Jordan !!") >> "Bravo, tu peux t'inscrire en Teen 1 !"
Ensuite, on peut aussi utiliser !=
, l’inégalité :
age = 13 nom = "Glorf" taille = 1.82 if age != 9: print("Tu ne peux pas t'inscrire en Mini 1 :(") if nom != "Glorf": print("Tu n'es pas le maître de Minecraft, imposteur !") if taille != 1.72: print("Tu ne fais pas la même taille que JUL, dommage !") >> "Tu ne peux pas t'inscrire en Mini 1 :(" >> "Tu ne fais pas la même taille que JUL, dommage !"
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 !
Il existe d’autres opérateurs de comparaisons, et on va parler des 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 :
<
: renvoie vrai si la valeur de GAUCHE est STRICTEMENT PLUS PETITE que la valeur de DROITE>
: renvoie vrai si la valeur de GAUCHE est STRICTEMENT PLUS GRANDE que la valeur de DROITEage = 13 if age < 10: print("Tu peux t'inscrire en Mini 1 !") if age > 12: print("Tu peux t'inscrire en Teen 1 !") >> "Tu peux t'inscrire en Teen 1 !"
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 :
<=
: renvoie vrai si la valeur de GAUCHE est PLUS PETITE OU ÉGALE que la valeur de DROITE=
: renvoie vrai si la valeur de GAUCHE est PLUS GRANDE OU ÉGALE que la valeur de DROITEtaille = 1.96 if taille < 1.72: print("Tu es plus petit que Jul !") if taille >= 1.96: print("Tu es au moins aussi grand que Michael Jordan !") >> "Tu es au moins aussi grand que Michael Jordan !"
Souvent, on va avoir besoin d’exécuter du code si les deux valeurs sont égales, et si elles ne le sont pas, comme ceci :
motdepasse = "carotte" if motdepasse == "antonin": print("Tu as débloqué le code secret !") if motdepasse != "antonin": print("Sors de là, intrus !") >> "Sors de là, intrus !"
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 bug, 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 :
motdepasse = "carotte" if motdepasse == "antonin": print("Tu as débloqué le code secret !") else: print("Sors de là, intrus !") >> "Sors de là, intrus !"
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
:
True
si les deux valeurs sont True
, False
sinonage = 14 if age >= 7 and age <= 15: print("Tu peux t'inscrire chez Magic Makers !") else: print("Dommage, tu n'as pas le bon âge !") >> "Tu peux t'inscrire chez Magic Makers !"
Vu que les opérateurs de comparaisons renvoient des bool, on peut les utiliser dans un and directement !
Il existe aussi l’opérateur or
, similaire à and
:
True
si au moins une des deux valeurs vaut True
nom = "Glorf" if nom == "Glorf" or nom == "Xefi": print("Bienvenue grand maître du Python !") else: print("Bienvenue, es-tu prêt à apprendre les arcanes du Python ?") >> "Bienvenue grand maître du Python !"
On peut combiner plusieurs or
(ou plusieurs and
) bien sûr :
if nom == "Glorf" or nom == "Xefi" or nom == "JUL":
Pour cela, on va devoir définir deux blocs de code : le bloc de la boucle, et le bloc de la condition, qui vont devoir être imbriqués. On va donc utiliser (encore) l’indentation, mais cette fois ci on aura un espace pour le premier bloc, et un autre espace pour le deuxième bloc (pas d’inquiétude, Sublime le fait pour nous automatiquement !) :
else
avec le if ici !ages = [5, 3, 18, 21, 24, 12, 54] nombre_majeurs = 0 for age in ages: if age >= 18: nombre_majeurs += 1 print("Il y a " + str(nombre_majeurs) + " adultes !") >> "Il y a 4 adultes !")
Afficher un message spécial à tous les Guillaume :
animateurs = ["Guillaume", "Adrien", "Jade", "Xefi", "Guillaume"] for nom in animateurs: if nom == "Guillaume": print("Bonjour Grand maître !!!") >> "Bonjour Grand maître !!!" "Bonjour Grand maître !!!"
Trouver s’il existe quelqu’un qui mesure 1m72 :
tailles = [1.72, 1.56, 1.92, 1.76, 1.65, 2.01] if 1.72 in tailles: print("Quelqu'un fait la même taille que JUL !")
Ici, on n’utilise pas une boucle, mais le mot clé in
, qui fait la recherche pour nous ! C’est quand même plus simple à écrire 🙂