Les conditions⚓︎
Une condition est une expression dont le résultat, True
(vrai) ou False
(faux), va généralement influencer l'exécution du programme. Parmi les conditions les plus courantes, on peut citer le test d'égalité qui détermine si deux valeurs sont égales.
Les conditions simples⚓︎
Pour déterminer si une variable longueur
a pour valeur 42
on écrira l'expression longueur == 42
qui vaudra True
en cas d'égalité et False
lorsque longueur
sera différente de 42
. L'opérateur ==
permet de tester l'égalité entre la valeur de l'expression de gauche (la variable longueur
) et l'expression de droite (l'entier 42
).
Voici les différents opérateurs disponibles et leur signification :
==
égalité. On écrira par exemplex == 5
pour déterminer si la valeur dex
est égale à5
.!=
différent. On écrira par exempley != 1
pour déterminer si la valeur dey
est différente de1
.>
supérieur strictement. On écrira par exemplea > 0
pour déterminer si la valeur dea
est strictement supérieure à0
.<
inférieur strictement. On écrira par exempleb < 7
pour déterminer si la valeur deb
est strictement inférieure à7
.>=
supérieur ou égal. On écrira par exemplec >= 4
pour déterminer si la valeur dec
est supérieure ou égale à4
.<=
inférieur ou égal. On écrira par exempled <= 3
pour déterminer si la valeur ded
est inférieure ou égale à3
.
Voici quelques exemples de conditions⚓︎
Pour déterminer si une variable z
n'est pas nulle, on écrira la condition z != 0
.
Pour déterminer si un nombre entier n
est pair, on écrira la condition n % 2 == 0
. Le calcul de n % 2
donne le reste de la division de n
par 2
, qui vaut 0
lorsque n
est un nombre pair (et 1
s'il est impair). On détermine par cette condition si ce reste est bien zéro.
Exercices⚓︎
On a affecté la valeur 15 à la variable x
. Donnez les résultats, True
ou False
, de chaque condition.
x == 4
x > 20
x <= 15
x != 12
Réponses
x == 4
vautFalse
car 15 n'est pas égal à 4.x > 20
vautFalse
car 15 n'est pas supérieur à 20.x <= 15
vautTrue
car 15 est bien inférieur ou égal à 15.x != 12
vautTrue
car 15 n'est pas égal à 12, 15 est différent de 12.
A-t-on 0.1 + 0.2 == 0.3
?
Réponse
Non. Les nombres flottants utilisent une représentation en base 2. Ceci a deux conséquences : certains nombres décimaux ne peuvent pas être représentés exactement et cela entraîne des arrondis. Dans le cas présent 0.1 + 0.2 == 0.3
a pour valeur False
. Il est donc fortement déconseillé de comparer des flottants.
Les comparaisons peuvent se faire entre deux chaînes de caractères comme entre les mots d'un dictionnaires. On a ainsi "cahier" < "livre"
en ce sens ou le mot "cahier"
apparaît avant le mot "livre"
dans le dictionnaire. Pour comparer deux chaînes de caractères non vides, on commence par comparer leur première lettre. Si elles sont différentes, c'est la plus petite lettre, au sens de l'ordre alphabétique, qui détermine l'ordre lexicographique entre les deux chaînes. Et si elles sont identiques, alors on compare la lettre suivante de chaque mot, etc.
On a affecté la chaîne "crayon"
à la variable outil
. Donnez les résultats de chaque comparaison.
outil == "stylo"
outil <= "livre"
outil > "ardoise"
outil != "crayon"
Réponses
outil == "stylo"
vautFalse
car"crayon"
n'est pas égal à"stylo"
(ils différent déjà par leur première lettre).outil <= "livre"
vautTrue
car"crayon"
est avant"livre"
dans le dictionnaire (les mots commençant par c sont avant ceux commençant par l).outil > "ardoise"
vautTrue
car"crayon"
est après"ardoise"
selon l'ordre lexicographique (les c sont après les a).outil != "crayon"
vautFalse
car ils s'écrivent de manière identique.
Note
Majuscules et minuscules doivent être considérées comme des caractères différents. Les majuscules sont avant les minuscules.
Opérateurs logiques⚓︎
On peut combiner plusieurs conditions grâce aux opérateurs logiques :
not
de négation (non) qui transformeTrue
enFalse
etFalse
enTrue
.and
de conjonction (et) qui donneTrue
seulement lorsque les deux conditions sont toutes les deuxTrue
.or
de disjonction (ou) qui donneTrue
lorsqu'au moins une des deux conditions estTrue
.
Illustration :
Pour déterminer si une chaîne de caractères prenom
est égale à "Toto"
ou "TOTO"
on écrira prenom == "Toto" or prenom == "TOTO"
. Notez bien qu'il faut écrire ici deux comparaisons !
De la même façon, pour déterminer si un nombre x
est compris entre 3
et 4
inclus, c'est à dire à la fois supérieur à 3
et inférieur à 4
, on pourra écrire 3 <= x and x <= 4
, même si on préférera généralement écrire l'encadrement 3 <= x <= 4
à la place.
Exercices⚓︎
On a affecté à x
la valeur 7. Indiquez le résultat True
ou False
de chaque condition.
x == 5 or x == 3
x == -2 or x == 7
x == 4 and x == 1
x == 7 and x == 6
5 <= x < 9
not -3 < x < 8
Réponses
x == 5 or x == 3
vautFalse
car les deux conditions combinées paror
sontFalse
.x == -2 or x == 7
vautTrue
car les deux conditions combinées paror
sontFalse
etTrue
(True
l'emporte avecor
).x == 4 and x == 1
vautFalse
car les deux conditions combinées parand
sontFalse
.x == 7 and x == 6
vautTrue
car les deux conditions combinées parand
sontTrue
etFalse
(False
l'emporte avecand
).5 <= x < 9
vauttTrue
car le nombre 7 est bien compris entre 5 et 9.not -3 < x < 8
vautFalse
en raison dunot
qui inverse le résultatTrue
de l'encadrement (7 est compris entre -3 et 8).