Aller au contenu

Les conditions en Python

Jusqu'à présent, Python exécutait toujours toutes nos lignes les unes après les autres, de haut en bas.

Mais croyez-le ou non, il existe des situations où l’on peut vouloir que certaines lignes ne s’exécutent que dans certains cas.
Et c'est pour ça qu'on va introduire ici : les conditions.

Le mot clef if

"If" en anglais veut dire "si".
Et c’est exactement son rôle en Python : on va exécuter un bloc de code si une condition est vraie.

Ainsi ce programme

age = 17
if age < 18:    # Cette condition est vraie
    print("Vous êtes mineur")   # Donc cette ligne est exécutée

affiche Vous êtes mineur, alors que celui-ci

age = 19
if age < 18:    # Cette condition est fausse
    print("Vous êtes mineur")   # Donc cette ligne n'est pas exécutée

n’affiche rien du tout.

Notez qu'on peut imbriquer les conditions les unes dans les autres comme ceci :

age = 17
if age < 21:
    print("Vous êtes mineur aux Etats-Unis")
    if age < 18:
        print("Vous êtes mineur en France")

Ce programme affiche donc

Vous êtes mineur aux Etats-Unis
Vous êtes mineur en France

Attention : l’indentation est obligatoire

Les lignes à l’intérieur du if doivent être décalées (tabulation). C'est ce décalage qui détermine quelles lignes sont à l'intérieur du bloc if et lesquelles ne le sont pas.

Les opérateurs de comparaison

Pour écrire des conditions, il existe 6 opérateurs de comparaison principaux, qui sont les suivants :

Opérateur Signification Exemple Résultat
== Est égal à 5 == 5 True
!= Est différent de 5 != 3 True
> Strictement supérieur à 5 > 3 True
< Strictement inférieur à 5 < 3 False
>= Supérieur ou égal à 5 >= 5 True
<= Inférieur ou égal à 3 <= 5 True

Chacun d'eux renvoie donc toujours booléen. Si ce booléen correspond à True, alors le bloc de code dans la condition est exécuté, sinon il est sauté.

Attention à ne pas confondre

  • = sert à assigner une variable
  • == sert à comparer

C’est l’une des erreurs les plus fréquentes chez les débutants.

Quizz

Voici un code Python

taille = 1.79
if taille >=1.9:
    print("Tu es grand")
    if taille >= 1.7:
        print("Tu es moyen")
Qu'affiche donc ce programme lorsqu'on l'exécute ?
- Tu es grand
- Tu es moyen
- Tu es grand Tu es moyen (avec un retour à la ligne entre les 2)
- *Il n'affiche rien du tout
> Comme la première comparaison renvoie faux, le programme ne rentre jamais dans le bloc de code, et donc n'affiche rien.

Les opérateurs logiques

On peut également combiner les conditions entre elles à l'aide des mots clefs and, or et not.

# and : les deux conditions doivent être vraies
if age >= 18 and pays == "France":
    print("Vous pouvez voter en France")

# or : au moins une condition doit être vraie
if est_etudiant or est_chomeur:
    print("Vous avez droit à une réduction")

# not : inverse la condition
if not est_banni:
    print("Vous pouvez poster un message")

elif et else

"Else" en anglais signifie sinon, et c'est exactement ce qu'il fait en Python. Il vient toujours après un if et récupère les cas donc le if n'a pas voulu (les rejetés de la société). Par exemple,

age = 19
if age < 18:
    print("Vous êtes mineur")
else:
    print("Vous êtes majeur")

affichera

Vous êtes majeur

"Elif" quant à lui est la contraction de "else" et "if", et donc il va combiner leur fonctionalité. En n'acceptatant que les cas qui n'ont pas été accepté jusqu'ici, mais également qui respectent la condition correspondante. Par exemple,

age = 19
if age < 18:
    print("Vous êtes mineur")
elif age < 21:
    print("Vous êtes majeur en France mais pas aux Etats-Unis")
else:
    print("Vous êtes majeur partout (je crois)")

affiche

Vous êtes majeur en France mais pas aux Etats-Unis

Exercice pratique

Dans un magasin :

  • Les moins de 18 ans ont 30% de réduction.
  • Les étudiants de moins de 25 ans ont 15% de réduction.
  • Les autres paient prix normal.

Écrivez un programme qui :

  1. Demande le prix initial
  2. Demande l’âge
  3. Demande si l’utilisateur est étudiant (si nécessaire)
  4. Affiche le prix final

Pour vous aider à bien comprendre voici quelques exemple d'exécutions.

Quel est le prix de vos achats ? 20
Quel est votre âge ? 17
Vous devez payer 14.0 euros.
Quel est le prix de vos achats ? 30
Quel est votre âge ? 22
Etes vous étudiant ? [o/n] o
Vous devez payer 25.5 euros.
Quel est le prix de vos achats ? 15
Quel est votre âge ? 35
Vous devez payer 15.0 euros.

Si vous aviez déjà quelque bases de programmations avant ce tutoriel, vous pouvez plutôt choisir de faire un chifumi où après que chaque joueur ait choisi quel symbole il joue, l'ordi dit qui a gagné. Il faudra trouver un moyen bien efficace de traiter tous les cas sans que ça ne devienne trop galère.

En résumé

Les conditions permettent de choisir dynamiquement quelles lignes sont exécutées.

Mot clé Rôle
if Exécuter un bloc si la condition est vraie
elif Tester une autre condition, si les précédentes ont échoué
else Attraper tous les autres cas
and, or, not Combiner / inverser les conditions

Mais il existe une autre structure de contrôle encore plus importante, qu'on appelle les boucles.

(Suite au prochain épisode !)