Skip to content

III. Les conditions

Cours

A. Les expressions booléennes

Définitions

Une variable de type booléen ne peut prendre que la valeur True ou la valeur False en Python.
Une expression est un ensemble de variables et/ou de valeurs, et d'opérateurs.
Une expression booléenne est une expression renvoyant un booléen.

On utilise une expression booléenne pour comparer différentes données : différentes valeurs, stockées dans une variable ou bien dont on donne directement la valeur.

Opérateur (en Python) Signification
== égal
!= différent
> strictement supérieur
< strictement inférieur
>= supérieur ou égal
<= inférieur ou égal

Exemples

Ici a vaut 7, pommes vaut 3, nombre1 vaut 25.8 et nombre2 vaut 137.2.

Expression (en Python) Signification Valeur
a == 5
0 != pommes
nombre1 <= nombre2
123 > 12
Solution
Expression (en Python) Signification Valeur
a == 5 teste si la variable a contient la valeur 5 False
0 != pommes teste si la valeur de la variable pommes est différente de 0 False
nombre1 <= nombre2 teste si la valeur de nombre1 est inférieure ou égale à celle de nombre2 True
123 > 12 teste si la valeur 123 est strictement supérieure à la valeur 12 True

La réponse à ces tests sera toujours True ou False.

B. Les instructions conditionnelles

On peut vouloir qu'un algorithme ne fasse pas les mêmes opérations en fonction des données du problème. On utilise alors l'instruction conditionnelle "Si... alors..." et "Sinon...".

B.1. Exemple : trouver le bon prix

On veut faire deviner le prix d'un objet à un utilisateur stocké dans une variable prix_objet. S'il rentre la bonne valeur dans la variable prix, on affiche qu'il l'a trouvé. Sinon, on affiche le contraire.

Algorithme utilisé :

Si prix égal à prix_objet 
    afficher "vous avez trouvé le prix"
Sinon
    afficher "vous n'avez pas trouvé"

Traduction en Python

if prix == prix_objet:
    print("vous avez trouvé le prix")
else:
    print("vous n'avez pas trouvé")
###

On veut donner plus d'indications au joueur : on veut lui dire si la valeur qu'il a entrée, si elle est mauvaise, est inférieure ou supérieure à celle attendue.

Algorithme utilisé :

Si prix égal à prix_objet 
    afficher "vous avez trouvé le prix"
Sinon si prix inférieur à prix_objet
    afficher "la valeur est inférieure au prix de l'objet"
Sinon
    afficher "la valeur est supérieure au prix de l'objet"

Traduction en Python

if prix == prix_objet:
    print("vous avez trouvé le prix")
elif prix < prix_objet:
    print("la valeur est inférieure au prix de l'objet")
else:
    print("la valeur est supérieure au prix de l'objet")
###

B.2. Principe général et syntaxe

Dans le cas général, on écrit l'algorithme sous la forme suivante :

Si condition alors 
     instructionA
Sinon
    instructionB

Cela correspond en Python à :

if condition:
    instructionA
else:
    instructionB

La syntaxe Python est importante !
- Les : : indispensables pour marquer la fin de l'expression booléenne utilisée.
- l'indentation est l'espacement par rapport au bord. Elle sert à indiquer quelles sont les instructions à exécuter uniquement si la condition est vraie, et celles exécutées uniquement si la condition est fausse.


TD

Exercice : (sur feuille)

  1. Remplir la table de trace du code suivant :

    Code

    seuil = 100
    x = 124
    if x > seuil:
        x = seuil
    
    Ligne seuil x
    1
    2
    3
    4
  2. En déduire ce que fait ce programme.

Exercice : Minimum et maximum (sur feuille, à tester sur ordinateur)

  1. On veut écrire un programme qui stocke dans une variable minimum le minimum entre deux entiers a et b, à l'aide d'une instruction conditionnelle.

    • Compléter les entrées et sorties du problème sur le schéma suivant :

      graph LR
      ............. --> F[algorithme];
      .............. --> F;
      F --> ......................

    • Compléter le programme suivant effectuant l'opération demandée :

    Code

    a = 9
    b = 2
    
    1. Quelle valeur contient la variable minimum, après exécution du programme ?
  2. Comment modifier le programme pour en avoir un qui retourne le maximum entre deux entiers ?

    Code

    a = 101
    b = 64
    
  3. Ecrire une fonction trouve_maximum prenant en paramètres deux nombres a et b et renvoyant le maximum des deux.

Exercice : Réseau social et conditions multiples (sur feuille, vérification sur ordinateur)

Sur un réseau social, le contenu des publications d'un utilisateur n'est visible que par ses amis. On représente le problème avec les variables suivantes :
- ami est une variable de type booléen indiquant si l'utilisateur qui veut voir les publications est un ami ou non.
- publication est une variable de type chaîne de caractère avec le contenu d'une publication.

  1. Combien y a-t-il de cas à traiter ?
  2. Proposer un algorithme qui modélise ce problème et le traduire en Python :

    Algorithme et code

    
    

    On rajoute une possibilité de voir la publication : si celle-ci est publique, elle est visible par tout utilisateur, même s'il n'est pas ami avec celui qui poste. On utilise une variable booléenne publique pour représenter cela.

  3. Combien y a-t-il à présent de cas à traiter ?

  4. Proposer un nouvel algorithme et le traduire en Python.

    Algorithme et code

    
    

Exercice : Publicité ciblée (sur feuille, à tester sur ordinateur)

Un vendeur de téléphones veut afficher de la publicité aux personnes se trouvant à proximité, c'est-à-dire à moins de 10 km.

  1. Définir une fonction publicite_ciblee(distance) prenant en paramètre la distance entre une personne et le magasin en km, et affichant "Promotions chez monTel, venez rapidement !" si distance est inférieure à 10 km.

    Code

    
    
  2. Appeler la fonction pour distance valant 5, puis pour distance valant 19. Que fait la fonction dans chacun des cas ?



TP : Conditions et fonctions

A. Devoir réussi ?

  • Écrire un programme qui :

    • stocke la valeur 12 dans une variable note,
    • si cette valeur est inférieure à 10, il affiche "Vous avez eu moins que la moyenne."
    • sinon, il affiche "Vous avez eu plus que la moyenne".
  • Exécuter le programme.

  • Faire un 2ème test, en affectant la valeur 7 à note.

  • Écrire un programme qui :

    • stocke la valeur 12 dans une variable note,
    • si cette valeur est égale à 10, il affiche "Vous avez eu la moyenne."
    • sinon, si elle est inférieure à 10, il affiche "Vous avez eu moins que la moyenne."
    • sinon, il affiche "Vous avez eu plus que la moyenne".
  • Exécuter le programme.

  • Faire un 2ème test, en affectant la valeur 10 à note.

  • Écrire une fonction qui :

    • prend en paramètre une variable note,
    • si cette valeur est égale à 10, elle affiche "Vous avez eu la moyenne."
    • sinon, si elle est inférieure à 10, elle affiche "Vous avez eu moins que la moyenne."
    • sinon, elle affiche "Vous avez eu plus que la moyenne".
  • Exécuter le programme.

  • Appeler la fonction en lui donnant la valeur 30 en paramètre.

B. Êtes-vous majeur ?

  • Écrire un programme qui :

    • stocke la valeur 16 dans une variable age,
    • si cette valeur est supérieure à 18, il affiche "Vous avez plus de 18 ans.",
    • sinon, il affiche "Vous avez moins de 18 ans.".
  • Exécuter le programme.

  • Faire un 2ème test, en affectant la valeur 25 à age.

  • Écrire un programme qui :

    • stocke la valeur 16 dans une variable age,
    • si cette valeur est égale à 18, il affiche "Vous avez 18 ans",
    • sinon, si cette valeur est supérieure à 18, il affiche "Vous avez plus de 18 ans."
    • sinon, il affiche "Vous avez moins de 18 ans."
  • Exécuter le programme.

  • Faire un 2ème test, en affectant la valeur 25 à age.

  • Écrire une fonction qui :

    • prend en paramètre une variable age,
    • si cette valeur est égale à 18, il affiche "Vous avez 18 ans",
    • sinon, si cette valeur est supérieure à 18, il affiche "Vous avez plus de 18 ans."
    • sinon, il affiche "Vous avez moins de 18 ans."
  • Exécuter le programme.

  • Appeler la fonction en lui donnant la valeur 25 en paramètre.

TP : Conditions multiples

Introduction

L'objectif de ce TP est d'écrire un programme qui renvoie automatiquement le nombre de jours qu'il y a dans un mois de l'année.

On représente les mois de l'année par leur numéro : par exemple janvier est le mois 1, février le mois 2, et ainsi de suite jusqu'au mois de décembre représenté par l'entier 12.

Tableau 1. Mois de début d'année

Janvier Février Mars Avril Mai Juin Juillet
Entier
Nombre de jours

Tableau 2. Mois de fin d'année

Août Septembre Octobre Novembre Décembre
Entier
Nombre de jours
  1. Compléter le tableau avec l'entier associé à chaque mois.

  2. Le nombre de jours contienus dans un mois dépend de s'il fait partie des 7 premiers mois de l'année, ou des 5 derniers. Ecrire une fonction, stockant dans une variable debut un booléen, valant True si mois est un mois du début de l'année, False sinon.

    Code

    def est_debut(m):
    
  3. a. Au début de l'année, si mois est pair, alors il a 30 jours, sauf s'il s'agit du mois de février qui en a en général 28. Sinon, il a 31 jours. Compléter le tableau des premiers mois de l'année, pour indiquer le nombre de jours des mois de janvier à juillet.

    b. Traduire l'algorithme suivant en Python permettant de stocker le nombre de jours du mois mois dans une variable nb_jours.

    • Si mois vaut ...(à compléter), on stocke la valeur 28 dans nb_jours,
    • sinon si mois est pair, stocke la valeur 30 dans nb_jours,
    • sinon, il stocke la valeur 31 dans nb_jours.

    Code

    
    
  4. a. Si l'on est à la fin de l'année, c'est l'inverse : si le mois est pair, il a 31 jours, sinon il a 30 jours. Compléter le tableau des mois de fin d'année (dans l'introduction) avec leur nombre de jours.

    b. Ecrire un programme (s'inspirant de celui de la question 2) stockant le bon nombre de jours dans nb_jours pour ce cas là.

    Code

    
    
  5. Ecrire un programme reprenant tous les cas précédents. Il suivra l'algorithme suivant :

    Si mois est du début de l'année
        Si c'est le mois de février
            on stocke le nombre de jours correspondant dans nb_jours
        Sinon s'il est pair
            on stocke le nombre de jours correspondant dans nb_jours
        Sinon
            on stocke le nombre de jours correspondant dans nb_jours
    Sinon
        S'il est pair
            on stocke le nombre de jours correspondant dans nb_jours
        Sinon
            on stocke le nombre de jours correspondant dans nb_jours
    
  6. Tester ce programme pour mois valant 3, 6, et 10.

  7. Ecrire une fonction compte_jours(m) prenant en paramètre un mois m et renvoyant son nombre de jours stocké dans la variable nb_jours.

    Code