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