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)¶
-
Remplir la table de trace du code suivant :
Code
seuil = 100 x = 124 if x > seuil: x = seuilLigne seuilx1 2 3 4 -
En déduire ce que fait ce programme.
Exercice : Minimum et maximum (sur feuille, à tester sur ordinateur)¶
-
On veut écrire un programme qui stocke dans une variable
minimumle minimum entre deux entiersaetb, à 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- Quelle valeur contient la variable
minimum, après exécution du programme ?
-
-
Comment modifier le programme pour en avoir un qui retourne le maximum entre deux entiers ?
Code
a = 101 b = 64 -
Ecrire une fonction
trouve_maximumprenant en paramètres deux nombresaetbet 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.
- Combien y a-t-il de cas à traiter ?
-
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
publiquepour représenter cela. -
Combien y a-t-il à présent de cas à traiter ?
-
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.
-
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 !"sidistanceest inférieure à 10 km.Code
-
Appeler la fonction pour
distancevalant5, puis pour distance valant19. Que fait la fonction dans chacun des cas ?
TP : Conditions et fonctions¶
A. Devoir réussi ?¶
-
Écrire un programme qui :
- stocke la valeur
12dans une variablenote, - 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".
- stocke la valeur
-
Exécuter le programme.
- Faire un 2ème test, en affectant la valeur 7 à
note.
-
Écrire un programme qui :
- stocke la valeur
12dans une variablenote, - 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".
- stocke la valeur
-
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".
- prend en paramètre une variable
-
Exécuter le programme.
- Appeler la fonction en lui donnant la valeur
30en paramètre.
B. Êtes-vous majeur ?¶
-
Écrire un programme qui :
- stocke la valeur
16dans une variableage, - si cette valeur est supérieure à 18, il affiche
"Vous avez plus de 18 ans.", - sinon, il affiche
"Vous avez moins de 18 ans.".
- stocke la valeur
-
Exécuter le programme.
- Faire un 2ème test, en affectant la valeur 25 à
age.
-
Écrire un programme qui :
- stocke la valeur
16dans une variableage, - 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."
- stocke la valeur
-
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."
- prend en paramètre une variable
-
Exécuter le programme.
- Appeler la fonction en lui donnant la valeur
25en 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 |
-
Compléter le tableau avec l'entier associé à chaque mois.
-
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
debutun booléen, valantTruesi mois est un mois du début de l'année,Falsesinon.Code
def est_debut(m): -
a. Au début de l'année, si
moisest 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
moisdans une variablenb_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
-
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_jourspour ce cas là.Code
-
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 -
Tester ce programme pour
moisvalant3,6, et10. -
Ecrire une fonction
compte_jours(m)prenant en paramètre un moismet renvoyant son nombre de jours stocké dans la variablenb_jours.Code