On appelle traitement conditionnel une portion de code qui n’est pas exécutée systématiquement, c’est à dire des instructions dont l’exécution est conditionnée par le succès d’un test.
En algorithmique un traitement conditionnel se rédige de la sorte :
Si <condition> alors <instructions> finSi
Si la condition est vérifiée, alors les instructions sont exécutées, sinon, elles ne sont pas exécutées. L’exécution de l’algorithme se poursuit alors en ignorant les instructions se trouvant entre le alors et le finSi. Un traitement conditionnel se code de la sorte :
if (<condition>): <instructions> |
Notez bien qu’il y a deux points après la parenthèse du
if
.
La formulation d’une condition se fait souvent à l’aide des opérateurs de comparaison. Les opérateurs de comparaison disponibles sont :
==
: égalité
!=
: non-égalité
<
,
<=
: inférieur à, respectivement strict et large
>
,
>=
: supérieur à, respectivement strict et large
Par exemple, la condition
a == b
est vérifiée si et seulement
si
a
et
b
ont la même valeur au moment où le test
est évalué. Par exemple,
i = int(input("Saisissez une valeur")) if (i == 0): print("Vous avez saisi une valeur nulle.") print("Au revoir !") |
Si au moment où le test
i == 0
est évalué, la valeur de
i
est bien
0
, alors le test sera vérifié et
l’instruction
print("Vous avez saisi une valeur nulle.")
sera
bien exécutée. Si le test n’est pas vérifié, les instructions du bloc
sous la portée du
if
sont ignorées.
Les indentations sont indispensables ! Les instructions sous la portée du
if
doivent être précédées d’une tabulation de plus que le
if
. Sinon des choses atroces se produiront !
Il existe une forme étendue de traitement conditionnel, on la note en algorithmique de la façon suivante :
Si <condition> alors <instructions> sinon <autresinstructions> finSi
Les instructions délimitées par alors et sinon sont exécutées si le test est vérifié, et les instructions délimitées par sinon et finSi sont exécutées si le test n’est pas vérifié. On traduit le traitement conditionnel étendu de la sorte :
if (<condition>): <instructions1> else: <instructions2> |
Par exemple,
i = int(input("Saisissez une valeur")) if (i == 0): print("Vous avez saisi une valeur nulle.") else: print("La valeur que vous avez saisi n'est pas nulle.") |
Notez la présence de l’opérateur de comparaison
==
. Si vous utilisez
=
pour comparer deux
valeurs, ça ne compilera pas !
On formule des conditions davantage élaborées en utilisant des
connecteurs et et ou. La condition A et B
est vérifiée si les deux conditions A et B sont
vérifiées simultanément. La condition A ou B est vérifiée si
au moins une des deux conditions A et B est
vérifiée. Le et s’écrit
and
et le ou
s’écrit
or
. Par exemple, voici un programme qui nous donne
le signe de i × j sans les multiplier.
print("Saisissez deux valeurs numériques : ") i = float(input()) j = float(input()) print("Le produit de ", i, " par ", j, " est ") if ((i >= 0 and j >= 0) or (i <= 0 and j <= 0)): printLine("positif.") else: printLine("négatif.") |
Une variable booléenne ne peut prendre que deux valeurs : vrai et
faux. Le type booléen en Python est
bool
et une variable de
ce type peut prendre soit la valeur
True
, soit la
valeur
False
.
if
Lorsqu’une condition est évaluée, par exemple lors d’un test, cette condition prend à ce moment la valeur vrai si le test est vérifié, faux dans le cas contraire. Il est donc possible de placer une variable booléenne dans un if. Observons le test suivant :
b = bool(input("Saisissez un booléen : ")) if (b): printLine("b est vrai.") else: printLine("b is faux.") |
Si b contient la valeur
True
, alors le test est réussi,
sinon le
else
est exécuté. On retiendra donc qu’il est
possible de placer dans un
if
toute expression pouvant
prendre les valeurs
True
ou
False
.
Un test peut être effectué en dehors d’un
if
, par exemple
de la façon suivante :
x = (3>2) |
On remarque que
(3>2)
est une condition. Pour décider quelle
valeur doit être affectée à
x
, cette condition est
évaluée. Comme dans l’exemple ci-dessus la condition est vérifiée,
alors elle prend la valeur
True
, et cette valeur est affectée à
x
.
Les connecteurs
or
et
and
peuvent s’appliquer à des
valeurs (ou variables) booléennes. Observons l’exemple suivant :
x = (True and False) or (True) |
Il s’agit de l’affectation à
x
de l’évaluation de la
condition
(True and False) or (True)
. Comme
(True and False)
a pour
valeur
False
, la condition
False or True
est ensuite évaluée et prend la
valeur
True
. Donc la valeur
True
est affectée à
x
.
Parmi les connecteurs logiques se trouve
not
, dit opérateur de
négation. La négation d’une expression est vraie si l’expression est
fausse, fausse si l’expression est vraie. Par exemple,
x = not (3==2) |
Comme
3 == 2
est faux, alors sa négation
not (3 == 2)
est vraie. Donc la valeur
True
est affectée à
x
.