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 = seuil
Ligne seuil
x
1 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
minimum
le minimum entre deux entiersa
etb
, à 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_maximum
prenant en paramètres deux nombresa
etb
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.
- 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
publique
pour 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 !"
sidistance
est inférieure à 10 km.Code
-
Appeler la fonction pour
distance
valant5
, 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
12
dans 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
12
dans 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
30
en paramètre.
B. Êtes-vous majeur ?¶
-
Écrire un programme qui :
- stocke la valeur
16
dans 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
16
dans 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
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 |
-
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
debut
un booléen, valantTrue
si mois est un mois du début de l'année,False
sinon.Code
def est_debut(m):
-
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 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_jours
pour 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
mois
valant3
,6
, et10
. -
Ecrire une fonction
compte_jours(m)
prenant en paramètre un moism
et renvoyant son nombre de jours stocké dans la variablenb_jours
.Code