VI. Tests (instruction if)▲
VI-A. Premier contact▲
Commençons par regarder le script ci-dessous :
À l'exécution du script, l'ordinateur va afficher la chaîne « Entrer un nombre plus petit que 100. » et va marquer un temps d'arrêt. En effet, la commande input() attend ici que l'on rentre un nombre et que l'on appuie sur la touche Entrée. Mais ce nombre est d'abord saisi en tant que chaîne de caractères, puis converti en nombre (flottant) grâce à la fonction float. Ce nombre sera alors affecté à la variable nb.
Puis le test commence :
- si (if en anglais) la condition (nb
<
100
) est vraie, alors le bloc d'instructions qui suit (ici une seule instruction) est exécuté ; - sinon (else en anglais), c'est-à-dire si la condition (nb
<
100
) est fausse, alors c'est l'autre bloc d'instructions qui est exécuté.
Ici les deux blocs d'instructions ne sont composés que d'une seule instruction.
Le couple if
et else
agit finalement comme un aiguillage. Attention cependant, l'instruction else
et son bloc sont parfois omis. Dans ce cas, si la condition est fausse, rien n'est exécuté.
VI-B. Comparaison de nombres▲
Vous aurez souvent à comparer des nombres. Voici une liste des opérateurs que vous pourrez utiliser :
- x == y est vrai quand x est égal à y ;
- x != y est vrai quand x est différent de y ;
- x > y est vrai quand x est strictement supérieur à y ;
- x < y est vrai quand x est strictement inférieur à y ;
- x >= y est vrai quand x est supérieur ou égal à y ;
- x <= y est vrai quand x est inférieur ou égal à y.
VI-C. Doubles inégalités▲
Python permet de plus l'enchaînement des comparaisons.
En mathématiques, il n'est pas rare que l'on ait à écrire pour dire que x appartient à l'intervalle . En Python, cela peut être fait grâce au connecteur and
(voir la section Compléments sur les booléensCompléments sur les booléens), comme dans les autres langages.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
>>>
for
x in
range(
5
):
... if
3
<=
2
*
x and
2
*
x <=
7
: # long et peu lisible
... print
(
x, "est dans l'intervalle"
)
... else
:
... print
(
x, "n'est pas dans l'intervalle"
)
...
(
0
, "n'est pas dans l'intervalle"
)
(
1
, "n'est pas dans l'intervalle"
)
(
2
, "est dans l'intervalle"
)
(
3
, "est dans l'intervalle"
)
(
4
, "n'est pas dans l'intervalle"
)
Mais c'est bien plus lisible avec la double inégalité, et chaque expression (ici ) n'est évaluée qu'une fois.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
>>>
for
x in
range(
5
):
... if
3
<=
2
*
x <=
7
: # plus concis et plus lisible
... print
(
x, "est dans l'intervalle"
)
... else
:
... print
(
x, "n'est pas dans l'intervalle"
)
...
(
0
, "n'est pas dans l'intervalle"
)
(
1
, "n'est pas dans l'intervalle"
)
(
2
, "est dans l'intervalle"
)
(
3
, "est dans l'intervalle"
)
(
4
, "n'est pas dans l'intervalle"
)
VI-D. Compléments sur les booléens▲
En début de chapitre nous avons vu que certaines conditions pouvaient être « vraies » ou « fausses ». Une branche des mathématiques appelée « logique » s'occupe justement de ce genre de problèmes et les booléens en sont les briques élémentaires. En Python, les mots True
et False
représentent respectivement « vrai » et « faux » (comme en anglais en fait).
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
>>>
True
True
>>>
False
False
>>>
true # attention à la majuscule !!!
Traceback (
most recent call last):
File "<stdin>"
, line 1
, in
<
module>
NameError
: name 'true'
is
not
defined
>>>
0
==
0
True
>>>
0
>
1
False
La négation s'exprime avec not
.
2.
3.
4.
5.
6.
>>>
not
True
False
>>>
not
False
True
>>>
not
0
==
0
False
On peut combiner deux booléens entre eux avec les opérateurs and
et or
. Ce sont respectivement les opérateurs logiques « et » et « ou » (comme en anglais aussi). Ci-dessous nous demandons à Python d'écrire les tables de vérité de ces deux opérateurs.
2.
3.
4.
5.
6.
7.
8.
>>>
for
a in
[False
, True
]:
... for
b in
[False
, True
]:
... print
(
a, "and"
, b, "vaut"
, a and
b)
...
False
and
False
vaut False
False
and
True
vaut False
True
and
False
vaut False
True
and
True
vaut True
2.
3.
4.
5.
6.
7.
8.
>>>
for
a in
[False
, True
]:
... for
b in
[False
, True
]:
... print
(
a, "or"
, b, "vaut"
, a or
b)
...
False
or
False
vaut False
False
or
True
vaut True
True
or
False
vaut True
True
or
True
vaut True
Vous trouverez d'autres informations dans la documentation de Python au sujet des booléens et des opérateurs logiques.