Les conditions sont un concept essentiel en programmation.
Elles vont vous permettre de faire une action précise si, par exemple, une
variable est positive, une autre action si cette variable est négative, ou une
troisième action si la variable est nulle. voici un exemple clair d'une
condition prise sous sa forme la plus simple. Les commentaires sont des messages
qui sont ignorés par l'interpréteur et qui permettent de donner des indications
sur le code. En Python, un commentaire débute par un dièse (« # ») et se termine
par un saut de ligne. Tout ce qui est compris entre ce
# et ce saut de
ligne est ignoré.
|
1 2 3 4 5 6 7 |
|
Il y a deux notions importantes sur lesquelles je dois à présent revenir, elles sont complémentaires ne vous en faites pas.
La première est celle de bloc d'instructions.
On entend par bloc d'instructions une série d'instructions qui s'exécutent dans
un cas précis (par condition, comme on vient de le voir, par répétition, comme
on le verra plus tard…). Ici, notre bloc n'est constitué que d'une seule
instruction (la ligne 4 qui fait appel à
print).
Mais rien ne vous empêche de mettre plusieurs instructions dans ce bloc.
|
1 2 3 4 5 6 7 |
|
La seconde notion importante est celle d'indentation. On entend par indentation un certain décalage vers la droite, obtenu par un (ou plusieurs) espaces ou tabulations.
Les indentations sont essentielles pour Python. Il ne s'agit pas, comme dans d'autres langages tels que le C++ ou le Java, d'un confort de lecture mais bien d'un moyen pour l'interpréteur de savoir où se trouvent le début et la fin d'un bloc.
if,
elif
et
else)
ifLa première forme de condition que l'on vient de voir est pratique mais assez incomplète.
Considérons, par exemple, une variable
a
de type entier. On souhaite faire une action si cette variable est positive et
une action différente si elle est négative. Il est possible d'obtenir ce
résultat avec la forme simple d'une condition :
|
1 2 3 4 5 |
|
si
a
est égal à 0, aucune action n'a été prévue si a vaut 0.
Cette méthode n'est pas optimale, tout d'abord parce qu'elle nous oblige à écrire deux conditions séparées pour tester une même variable. De plus, et même si c'est dur à concevoir par cet exemple, dans le cas où la variable remplirait les deux conditions (ici c'est impossible bien entendu), les deux portions de code s'exécuteraient.
La condition
if
est donc bien pratique mais insuffisante.
else:Le mot-clé
else,
qui signifie « sinon » en anglais, permet de définir une première forme de
complément à notre instruction
if.
|
1 2 3 4 5 |
|
Il faut bien se rendre compte que Python
exécute soit l'un, soit l'autre, et jamais les deux. Notez que cette instruction
else doit se trouver au même
niveau d'indentation que l'instruction
if
qu'elle complète. De plus, elle se termine également par deux points puisqu'il
s'agit d'une condition, même si elle est sous-entendue.
L'exemple de tout à l'heure pourrait donc se
présenter comme suit, avec l'utilisation de
else
:
|
1 2 3 4 5 |
|
Mais… le résultat n'est pas tout à fait le même, si ?
Non, en effet. Vous vous rendrez compte que,
cette fois, le cas où
a
vaut
0
est bien pris en compte. En effet, la condition initiale prévoit d'exécuter le
premier bloc d'instructions si
a
est strictement supérieur à
0.
Sinon, on exécute le second bloc d'instructions.
Si l'on veut faire la différence entre les nombres positifs, négatifs et nuls, il va falloir utiliser une condition intermédiaire.
elif:Le mot clé
elif
est une contraction de « else if », que l'on peut traduire très littéralement
par « sinon si ». Dans l'exemple que nous venons juste de voir, l'idéal serait
d'écrire :
·
si
a
est strictement supérieur à
0,
on dit qu'il est positif ;
·
sinon si
a
est strictement inférieur à
0,
on dit qu'il est négatif ;
·
sinon, (a
ne peut qu'être égal à
0),
on dit alors que
a
est nul.
Traduit en langage Python, cela donne :
|
1 2 3 4 5 6 |
|
De même que le
else,
le
elif
est sur le même niveau d'indentation que le
if
initial. Il se termine aussi par deux points. Cependant, entre le
elif
et les deux points se trouve une nouvelle condition. Linéairement, le schéma
d'exécution se traduit comme suit :
1.
On regarde si
a
est strictement supérieur à
0.
Si c'est le cas, on affiche « a est positif » et on s'arrête là.
2.
Sinon, on regarde si
a
est strictement inférieur à
0.
Si c'est le cas, on affiche « a est négatif » et on s'arrête.
3. Sinon, on affiche « a est nul ».
Sachez qu'il est heureusement possible d'imbriquer des conditions et, dans ce cas, l'indentation permet de comprendre clairement le schéma d'exécution du programme.
Autres exemples avec saisie:
print("Entrer un nombre plus petit que 100.")
nb = float(input())
if nb < 100:
print("Ce nombre convient.")
else:
print("Ce nombre est trop grand.")
A 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 chaine de caractères, puis converti en nombre (flottant) grâce à la fonction float. Ce nombre sera alors affecté à la variable nb.
Attention
Avec Python3, la fonction input() renvoie systématiquement une chaîne de caractères. Donc si c’est un nombre que l’on veut manipuler, il faudra utiliser la fonction int() s’il s’agit d’un entier ou float() s’il s’agit d’un décimal. Par exemple :
chaine = input()
nb = float(chaine)
ou bien directement
nb = float(input())
Comparaison de nombres
Vous aurez souvent à comparer des nombres. Voici une liste des opérateurs que vous pourrez utiliser.
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 comme dans les autres
langages.
>>> for x in range(5):#pour x dans 0..5 for sera vue plus loin
... 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")
...
Mais c’est bien plus lisible
avec la double inégalité, et chaque expression (ici
)
n’est évaluée qu’une fois.
>>> 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")