• 6 heures
  • Facile

Ce cours est visible gratuitement en ligne.

course.header.alt.is_video

course.header.alt.is_certifying

J'ai tout compris !

Mis à jour le 12/10/2023

Contrôlez votre code grâce aux structures conditionnelles

Au fur et à mesure que vous allez travailler sur des projets plus en plus complexes, écrire un ensemble de lignes qui vont s’exécuter une à une ne sera pas suffisant ! C’est là que les structures conditionnelles rentrent en jeu.

Dans nos tout premiers chapitres, vous avez vu comment dire "Hello World". Ne serait-il pas mieux de modifier légèrement ce programme pour qu’il soit un peu plus spécifique et dise bonjour à une personne en particulier ?

Affichez des informations si elles sont disponibles

Lorsque vous démarrez votre programme, vous ne connaissez pas forcément à l’avance le nom de l’utilisateur. Que diriez-vous d’un programme qui puisse :

  • dire bonjour à un utilisateur en particulier, si vous connaissez son nom ;

  • sinon, continuer à dire bonjour à tout le monde ?

Voici votre première condition, qui vous permettra de construire votre première structure conditionnelle.

Comment pouvez-vous avoir le nom d’une personne en premier lieu ?

Vous souvenez-vous des fonctions ? Bonne déduction, vous pouvez faire cela via une fonction : la fonction input. Cette dernière va demander à l’utilisateur du notebook (autrement dit... vous !) d’entrer une chaîne de caractères qui sera ensuite stockée dans une variable.

Voyons ensemble un exemple :

Fonction input avec Jupyter !
Fonction input avec Jupyter !

Vous avez un espace pour pouvoir répondre à la question et votre réponse sera stockée sous forme de string dans la variable  nomUtilisateur.

Concevez à présent le code qui vous permettra de dire bonjour à votre utilisateur :

  1. Demander à l’utilisateur son nom et stocker sa réponse dans une variable  nom.

  2. Vérifier si la variablenom  contient bien une valeur (au cas où l’utilisateur ne répondrait rien). La fonction  len  est votre amie pour réaliser cette tâche !

  3. Si c’est le cas, dire Hello à votre utilisateur avec son nom.

  4. Sinon, continuer à dire Hello au monde entier. :)

Voici le code correspondant :

nom = input('Quel est ton nom, cher(e) inconnu(e) ?')

if len(nom) > 0:
    print("Hello", nom, "!")
else:
    print("Hello World !")

Cela marche bien ! Tout ce qui est indenté en dessous du if est exécuté si la condition est vraie, sinon le programme exécute tout ce qui est indenté en dessous du else.

Regardons un peu plus en détail comment la structure if fonctionne concrètement.

Utilisez les booléens : le type sans demi-mesure

En Python, pour valider une condition, vous utilisez un type (ou objet ;)) un peu spécial appelé booléen. Une variable de type booléen ne peut contenir que deux valeurs : vrai ou faux. C’est finalement un type assez simple, mais ô combien utile !

En Python, le booléen peut concrètement prendre les valeurs True et False. Voyez à présent comment déclarer des booléens en Python :

ceCoursEstGenial = True
sonAuteurEstTresHumble = False

Facile, non ?

Pour revenir à votre structure conditionnelle if, je pense que vous l’aurez compris, mais il faut absolument que ce qui suit le mot clé if aboutisse à un booléen. Cela peut être réalisé via :

  • une valeur  True  ou  False. Par exemple,  if True :  ;

  • une variable de type booléen. Par exemple,  if maVariable:  où  maVariable  est un booléen ;

  • une expression qui aboutit à une valeur booléenne, comme dans l’exemple vu ci-dessus.

Par exemple :

meteo = "La météo est chouette !"
meteo.startswith("La météo") # -> True

startswith  est une méthode de la classe string, qui retourne  True  lorsque la chaîne de caractères commence exactement par le string passé en paramètre ;False, sinon. Vous pourriez par exemple utiliser cette expression pour réaliser une action si une phrase commence bien par un mot en particulier.

Pour produire des booléens, vous pouvez également utiliser des opérateurs de comparaison.

Opérateurs de comparaison

Comme le nom le suggère, les opérateurs de comparaison sont utilisés pour comparer deux valeurs. Il y en a six principaux :

  • ==  égal à (deux valeurs sont exactement pareilles) ;

  • !=  différent de ;

  • <  inférieur à ;

  • <=  inférieur ou égal ;

  • >  supérieur à ;

  • >=  supérieur ou égal.

Voici quelques exemples avec des variables numériques :

2 == 2 # -> True
2 == 3 # -> False
4 != 4 # -> False
4!= 5 # -> True
1 < 2 # -> True
1 < 1 # -> False
1 <= 1 # -> True
3 > 4 # -> False
5 > 4 # -> True
5 >= 4 # -> True

On peut assigner le résultat de ces opérations à une variable :

age=15

if age>=21:
    # Faire quelquechose si l'age est supérieur ou égal à 21

Parfois, vous allez avoir besoin de conditions plus élaborées, où la condition va être le résultat de la combinaison de plusieurs expressions. C’est là qu’interviennent les opérateurs logiques.

Opérateurs logiques

Ces opérateurs vont vous permettre de mixer plusieurs valeurs booléennes : des valeurs booléennes spécifiques ou des résultats d’expression. Il y en a 3 :

  • and  : l’opérateur ET.
    Le résultat final est vrai seulement lorsque toutes les expressions/valeurs sont vraies. Par exemple : le résultat de  expression1 and expression2  sera à True seulement si  expression1  est vraie ET  expression2  est également vraie ;

  • or  : l’opérateur OU.
    Le résultat final est vrai lorsqu’au moins une des expressions/valeur est vraie. Par exemple : le résultat de  expression1 or expression2  sera à True si  expression1  est vraie OUexpression2  est vraie ;

  • not  : l’opérateur N’EST PAS.
    Cela inverse simplement le résultat de l’expression donnée. Par exemple, le résultat de  not(expression)  est vrai lorsque  expression  est faux.

Voici quelques exemples avec les résultats en commentaire :

True and True # True
True and False # False
False and False # False
True or False # True
True or True # True
False or False # False
not(True) # False
not(False) # True

On peut également mixer plus de deux expressions/valeurs :

True and True and True # True
True and True and False # False
True or False or False # True
False or False or False # False

Comme avec les opérations numériques, les opérateurs logiques respectent les priorités d’opérations : l’opérateur not  est réalisé en premier, ensuite l’opérateur and  puis l’opérateur  or. Par exemple :

False or True and True # True
not(False) and True or False # True

Vous pouvez également utiliser des parenthèses pour changer l’ordre :

(True and False) or True # True
not(True and False or not(True)) # True

La forme générale d’une structure conditionnelle if est  if condition:  où la condition peut être soit un booléen, soit une variable de type booléen, soit le résultat d’une expression aboutissant à un résultat booléen.

L’opérateur "in"

Un autre opérateur logique utile en Python est l’opérateur  in. Cela renvoie  True  lorsqu’une valeur est trouvée dans une séquence (un string ou une liste) ;False,  sinon.

Par exemple :

maListe = [4, 2, 3, 2, 10]
maListeDeString = ["a", "b", "c", "d"]
monString = "La météo est vraiment bien aujourd'hui !"

4 in maListe # True
0 in maListe # False
0 in maListeDeString # False
"c" in maListeDeString # True
"e" in maListeDeString # False
"météo" in monString # True
"vraiment" in monString # True
"pluie ?" in monString # False

Dans votre exemple "Hello World", vous avez défini une seule alternative. Comment faire à présent si vous avez plus d’une seule alternative ?

Gérez un enchaînement de conditions

Pour accorder un prêt, une banque se base (entre autres) sur l’état des comptes de ses utilisateurs. Par exemple, une règle de décision naïve pourrait être :

  • si le client a plus de 10 000 € sur son compte, on lui attribue son prêt d’office ;

  • s’il a entre 100 € et 10 000 €, on fait une étude de son dossier ;

  • sinon on lui refuse.

On pourrait utiliser deux if imbriqués, mais Python permet d’enchaîner plusieurs conditions grâce au mot clé  elif  (contraction d’else et if). Voici la forme générale :

if condition1: 
    # instructions
elif condition2:
    # instructions
else:
    # instructions

Voilà le code correspondant à l’exemple présenté ci-dessus :

compte = input("Quel est le soldes de votre compte ?")
compte = int(compte) # transformer la réponse en entier

if compte >= 10000:
    print("Prêt accordé !")
elif compte >= 100 and compte < 10000:
    print("Prêt en cours de validation : à l'étude")
else:
    print("Prêt refusé")

Essayez par vous-même :

Manipulez les structures conditionnelles dans l'exercice suivant.

Vous pourrez trouver la correction ici même.

En résumé

  • Les conditions vous permettent d’exécuter un bloc de code lorsqu’un booléen, une variable ou une expression est vrai (True).

  • Les expressions utilisent de l’arithmétique booléenne, incluant des opérateurs logiques et des opérateurs de comparaison.

  • Vous pouvez réaliser plusieurs conditions avec les enchaînements de if/elif/else.

Dans le prochain chapitre, vous verrez un autre moyen de contrôler le code via des boucles.

Exemple de certificat de réussite
Exemple de certificat de réussite