Une instruction conditionnelle, ou instruction de test, permet de faire des choix en fonction de la valeur d’une condition. On parle souvent d’une instruction si-alors, ou if-else en anglais.
Une condition est une instruction qui est soit vraie, soit fausse. On dit qu’il s’agit d’un booléen.
Par exemple, si une variable a
vaut 5 et qu’une variable b
vaut 10 alors la condition a < b
est une condition qui est vraie, tandis que les conditions a > b
et a == b
sont fausses.
On peut vérifier rapidement cela dans une console Python. Attention, le test d'égalité entre deux variables se fait avec un double égal
==
(car le simple=
permet d'affecter une valeur à une variable).
On peut utiliser de telles conditions pour écrire des instructions conditionnelles. Voici un exemple simple.
Exemple
On souhaite connaître le vainqueur d’un match de football connaissant le score des deux équipes A et B . À la fin de l’algorithme suivant , la variable vainqueur
contient la réponse à la question :
si scoreA > scoreB alors
vainqueur ← "équipe A" (la flèche ← signifie "prend la valeur")
sinon si scoreA < scoreB alors
vainqueur ← "équipe B"
sinon
vainqueur ← "Match nul"
Dans cet exemple, il y a deux conditions scoreA > scoreB
et scoreA < scoreB
et chacune est soit vraie, soit fausse. On voit bien qu’un choix est effectué (pour la variable vainqueur
) selon la valeur de ces conditions.
Pour écrire des instructions conditionnelles en Python, il faut utiliser la syntaxe suivante :
if condition1:
bloc_instructions_1
elif condition2:
bloc_instructions_2
else:
bloc_instructions_3
Les mots-clés if
, elif
(contraction de else if) et else
sont les traductions respectives de “si”, “sinon si” et “sinon”.
Remarques importantes
:
) à la fin des lignes avec if
, elif
et else
:
n’a pas été oublié.
Tab
) du clavier (située au-dessus de la touche “Verrouillage majuscules”).
elif
et else
sont optionnels, c’est-à-dire que l’on peut avoir seulement un if
comme ceci
if condition:
bloc_instructions
ou un if
suivi d’un else
comme cela
if condition:
bloc_instructions_1
else:
bloc_instructions_2
elif
que l’on souhaite.
Exemple : Ainsi, on peut écrire une fonction Python qui traduit l'algorithme précédent sur le vainqueur d'un match entre deux équipes. Cette fonction, que l'on choisit d'appeler gagnant
:
scoreA
et scoreB
des deux équipes ;Voici le code de cette fonction :
def gagnant(scoreA, scoreB):
if scoreA > scoreB: # si scoreA > scoreB
vainqueur = "équipe A"
elif scoreA < scoreB: # sinon si scoreA < scoreB
vainqueur = "équipe B"
else: # sinon
vainqueur = "Match nul"
return vainqueur
A faire vous-même n°1
gagnant
donnée juste avant (ne faites pas de copier-coller, c'est pour apprendre à écrire sans faire d'erreurs justement !).gagnant(4, 1)
et appuyez sur Entrée. Quelle est la valeur renvoyée ?"Match nul"
. Testez-le !Jusqu’ici nous avons testé uniquement des inégalités strictes (< ou >). Il est bien sûr également possible de tester des inégalités larges (≤ ou ≥) et aussi des égalités (ou l’absence d’égalité). Le tableau suivant résume quelques-unes des possibilités supplémentaires.
Test | Syntaxe Python |
---|---|
a = b | a == b |
a ≠ b | a != b |
a ≤ b | a <= b |
a ≥ b | a >= b |
a < b < c | a < b < c |
a ≤ b ≤ c | a <= b <= c |
a < b ≤ c | a < b <= c |
Important : vous remarquerez que pour tester l’égalité de deux variables on doit utiliser un double égal :
==
. C’est une source d’erreur très fréquente, donc prêtez-y attention ! 😉
A faire vous-même n°2
Pour s’inscrire sur certains réseaux sociaux, il faut avoir au moins 13 ans. On veut écrire une fonction qui indique si un utilisateur peut s’y inscrire en fonction de son âge.
La fonction age_requis
a pour paramètre l’age
d’un utilisateur et renvoie True
(= Vrai) s’il peut s’inscrire sur le réseau social en question, et False
(= Faux) si ce n’est pas le cas.
Voici le code incomplet de la fonction age_requis
.
def age_requis(age):
if age >= ???:
reponse = True
else:
reponse = ???
return ???
???
par les bonnes instructions pour que la fonction age_requis
soit correcte.Attention : il faut bien veiller à écrire
True
etFalse
avec une première lettre majuscule en Python.
True
et un appel renvoyant la valeur False
.A faire vous-même n°3
Crédits : Cet exercice est grandement inspiré du travail proposé par Franck Chevrier sur son site python-lycee.com. Activité d'origine : https://www.python-lycee.com/parcours-apprentissage-pl3
Les applications de fitness permettent de calculer l’Indice de Masse Corporelle (IMC) de l’utilisateur. Celui-ci se calcule avec la formule :
$$\text{IMC} = \dfrac{\text{masse}}{\text{taille}^2}$$
où la masse est exprimée en kg et la taille en mètre.
La fonction imc
suivante permet de calculer et renvoyer l'IMC d'une personne.
def imc(masse, taille):
indice = masse / (taille ** 2)
return indice
imc
pour les 3 personnes présentées (il faut faire les bons appels dans la console).diagnostic
qui permet de renvoyer un message indiquant si un individu possède un IMC dans la norme ou non.
diagnostic
dans basthon (en dessous du code de la fonction imc
). Testez ensuite cette fonction pour les 3 personnages.diagnostic
pour obtenir une analyse plus précise, en tenant compte de la grille de lecture ci-dessous.Aide : Inspirez-vous de la fonction
gagnant
et regardez dans le tableau précédent, la bonne syntaxe pour écrire des inégalités.
diagnostic
pour les 3 personnages précédents.A faire vous-même n°4
On veut écrire une fonction Python mention_bac
qui prend en paramètre la moyenne moy
d’un élève au baccalauréat et qui renvoie selon les cas une chaîne de caractères parmi "Vous n’avez pas votre bac"
, "Vous avez votre bac sans mention"
ou "Vous avez votre bac avec mention !"
.
Rappel : avec une moyenne :
mention_bac
.Aide : Inspirez-vous de la fonction
gagnant
et regardez dans le tableau précédent, la bonne syntaxe pour écrire des inégalités.
A faire vous-même n°5
On rappelle que la couleur d'un pixel est codé par ses 3 composantes RVB (Rouge, Vert, Bleu). Chaque composante est un nombre entier compris entre 0 et 255. Par exemple, un pixel vert (pur) à des composantes $R=0$, $V=255$ et $B=0$.
On peut représenter un pixel en Python par la donnée des 3 composantes. Par exemple, on peut définir un pixel vert et un pixel rouge par les deux instructions suivantes :
pix1 = (0, 255, 0)
pix2 = (255, 0, 0)
pix3
qui est bleu (pur).est_rouge
suivante.def est_rouge(pixel):
if pixel == (255, 0, 0): # vous remarquerez qu'il faut un double égal pour tester l'égalité
reponse = True
else:
reponse = False
return reponse
est_rouge(pix1)
pour observer le résultat.est_rouge
sur les pixels pix2
et pix3
. Quel est le rôle de cette fonction ?est_bleu
qui permet de tester si le pixel donné en paramètre est bleu (pur) ou non.pix1
, pix2
et pix3
.Parfois il est nécessaire de combiner plusieurs conditions dans un test.
Exemple : à la faculté, pour valider son semestre il est parfois nécessaire d’obtenir au moins la moyenne (soit 10/20) dans toutes les matières. De manière simplifiée, on suppose ici qu’il n’y a que trois matières (A, B et C). Ainsi, à la fin de l’algorithme suivant, la variable resultat
vaut True
si le semestre est validé et False
sinon.
si noteA >= 10 et noteB >= 10 et noteC >= 10 alors
valide = True
sinon
valide = False
Il est nécessaire que les trois conditions noteA >= 10
, noteB >= 10
et noteC >= 10
soient vraies pour que le trimestre soit validé.
En Python, on utilise le mot-clé and
pour traduire le “et” et le mot-clé or
pour traduire le “ou”.
Condition | Syntaxe Python |
---|---|
condition1 et condition2 | condition1 and condition2 |
condition1 ou condition2 | condition1 or condition2 |
On peut combiner autant de conditions que l'on souhaite dans un test.
A faire vous-même n°6
semestre_valide
qui possède les trois notes en paramètres et qui renvoie True
si le semestre est validé et False
sinon.
semestre_valide
dans l'éditeur Basthon et testez ensuite cette fonction en veillant à tester les différents cas de figure.A faire vous-même n°7
Crédits : cet exercice est proposé par Franck Chevrier sur son site python-lycee.com à l'adresse https://www.python-lycee.com/parcours-apprentissage-pl3
Un site de vente en ligne propose tous les ans des réductions au moment des fêtes de Noël. Si on achète 3 articles qui coûtent chacun moins de 10 €, alors on bénéficie d'une remise totale de 40 % sur ce lot.
remise
qui possède trois prix en paramètres et qui renvoie True
si la remise s'applique et False
sinon.facture
ci-dessous. Testez cette fonction pour des articles coûtant 5€, 8€ et 12€, puis pour des articles coûtant 5€, 6,50€ et 8€.def facture(p1, p2, p3):
prix = p1 + p2 + p3
if remise(p1, p2, p3):
prix = prix * 0.6
return prix