V. Les débuts de la programmation▲
Bien entendu, on peut utiliser Python pour des tâches plus compliquées que de remplir et d’afficher des variables. Il possède des instructions de contrôle de flux classiques que l’on trouve dans d’autres langages, mais toujours avec ses propres tournures.
V-1. L’instruction « if »▲
L’instruction if
est sans doute la plus universelle de tous les langages. Elle permet d’effectuer une action (ou un ensemble d’actions) sur une condition vraie et offre la possibilité de rajouter une action (ou un ensemble d’actions) à effectuer dans le cas contraire.
Par exemple :
Les parties elif
, qui peuvent être multiples, et la partie else
, qui, elle, doit être unique, sont facultatives. Le mot clef elif
est un raccourci pour else
if
, mais permet de gagner un niveau d’indentation. Une séquence if
… elif
… elif
… else
est par ailleurs équivalente aux instructions switch
+case
disponibles dans d’autres langages et qui n’existent pas en Python.
N’oubliez pas l’indentation pour que Python puisse associer les actions à exécuter à l'évaluation de la condition.
V-2. L’instruction « while »▲
L’instruction while
est la seconde étape dans la programmation Python (ainsi que dans les autres langages structurés). Elle permet d’effectuer une action (ou un ensemble d’actions) répétée tant que la condition exprimée est vraie. Par exemple, ce calcul de la suite de Fibonacci :
2.
3.
4.
5.
6.
>>>
(
a, b)=(
0
, 1
)
>>>
while
b <
1000
:
... print
(
b, end=
''
)
... (
a, b)=(
b, a+
b)
...
1
1
2
3
5
8
13
21
34
55
89
144
233
377
610
987
>>>
La boucle while
s’exécute tant que la condition (ici b < 1000) reste vraie. La condition peut être n’importe quelle expression représentant un booléen.
Notez aussi l’utilisation de tuples pour regrouper des affectations sur plusieurs variables en une fois.
V-3. L’instruction « for »▲
L’instruction for
que propose Python est un peu différente de celle que l’on peut trouver dans d'autres langages qui la possèdent. Au lieu de toujours itérer sur une suite arithmétique de nombres comme en Pascal ou de demander à spécifier un début, une condition de continuation et un incrément comme en C ; l’instruction for
en Python itère sur les éléments d’une séquence (qui peut être une liste, une chaîne de caractères ou autre itérable…), dans l’ordre dans lequel ils apparaissent dans la séquence. Par exemple :
2.
3.
4.
5.
6.
7.
>>>
words=(
"chat"
, "fenetre"
, "maison"
)
>>>
for
w in
words:
... print
(
w, len(
w))
...
chat 4
fenetre 7
maison 6
Alors ça peut paraître assez limitatif comme possibilité, mais comme nous le verrons par la suite, il existe dans Python une telle gamme d’outils et de technologies diverses qui permettent de générer facilement nombreuses séquences et autres itérables qu’en réalité la boucle for
est l’une des plus utilisées par les programmeurs.
V-4. Les instructions « break » et « continue », et les clauses « else » au sein des boucles▲
Les instructions break
et continue
sont toujours associées aux boucles. La première interrompt la boucle avant sa fin naturelle tandis que la seconde repart sur l’itération suivante en négligeant toutes les instructions du corps de boucle placées après elle.
Les boucles peuvent également disposer d’une instruction else
assez nouvelle par rapport aux autres langages. Celle-ci est exécutée uniquement lorsque la boucle se termine naturellement parce que la condition est devenue fausse (dans le cas d’un while
) ou que tous ses éléments ont été traités (dans le cas d’un for
) ; mais pas lorsque la boucle est interrompue avant sa fin naturelle par une instruction break
.
L’exemple suivant, qui effectue une recherche de nombres premiers, en est une démonstration :
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
>>>
n=
2
>>>
while
n <
10
:
... x=
2
... while
x <
n:
... if
(
n%
x) ==
0
:
... print
(
n, 'égal à '
, x, '*'
, n//
x)
... break
... x+=
1
... else
:
... print
(
n, 'est un nombre premier'
)
... n+=
1
...
2
est un nombre premier
3
est un nombre premier
4
égal à 2
*
2
5
est un nombre premier
6
égal à 3
*
2
7
est un nombre premier
8
égal à 4
*
2
9
égal à 3
*
3
V-5. L’instruction « pass »▲
L’instruction pass
ne fait rien. Son rôle est juste de fournir une instruction lorsque celle‑ci est nécessaire pour fournir une syntaxe correcte, mais qu’aucune action n’est utile. Par exemple :
2.
while
True
:
pass
# Juste pour attendre le ctrl-c
Un autre cas d’utilisation du pass
est de réserver un espace en phase de développement pour une fonction ou un traitement conditionnel, permettant ainsi au développeur de construire son code à un niveau plus abstrait. L’instruction pass
est alors ignorée silencieusement :
2.
3.
4.
if
expression:
pass
# Sera implémenté plus tard
else
:
autre action
V-6. Les instructions « do…while » et « switch…case »▲
L’instruction do…while
utilisée dans d'autres langages n'existe pas en Python, car sa syntaxe souple et ses outils intégrés permettent de programmer facilement son équivalent.
Équivalent d'un do…while
(action et répéter tant que la condition est vraie)…
En C Sélectionnez 1. 2. 3.
|
En Python Sélectionnez 1. 2. 3.
|
L’instruction switch
…case
elle aussi très souvent utilisée dans d'autres langages n'existait pas jusqu’à Python version 3.10. Jusque là on pouvait programmer plus ou moins facilement son équivalent.
Équivalent d'un switch
…case
(différentes actions en fonction d'une valeur)…
En C Sélectionnez 1. 2. 3. 4. 5. 6.
|
En Python Sélectionnez 1. 2. 3. 4. 5.
|
Comme on va le voir, Python a un peu évolué à ce propos.
V-7. L’instruction « match »▲
L’instruction match, nouvellement arrivée dans Python version 3.10, a pour but de reprendre l’équivalent de l’instruction switch
…case
disponible dans beaucoup d’autres langages et qui manquait alors à beaucoup ayant des habitudes avec cette instruction.
Équivalent d'un switch
…case
sous Python version 3.10 (et supérieurs) …
En C Sélectionnez 1. 2. 3. 4. 5. 6.
|
En Python Sélectionnez 1. 2. 3. 4. 5. 6. 7. 8. 9.
|
V-8. La notion d’expression▲
Durant tout ce tutoriel a été évoquée à plusieurs reprises la notion d’expression. Il est temps de clarifier un peu ce point.
Une expression en Python est simplement une suite d’opérations représentant une valeur.
Si cette expression est tapée dans l’interpréteur Python sans être récupérée d’une façon ou d’une autre (une variable, une fonction) alors elle est réaffichée immédiatement sur la ligne suivante.
Si cette expression est dans un script là aussi sans être récupérée, alors elle est exécutée silencieusement et disparait.
Une expression peut prendre plusieurs formats :
- la constante simple
2.
3.
4.
>>>
123
123
>>>
"Hello"
'Hello'
- une opération faisant intervenir des constantes ou d’autres opérations
2.
3.
4.
>>>
2
*
2
4
>>>
"Hello"
*
4
'HelloHelloHelloHello'
- une évaluation faisant intervenir des constantes, des opérations ou d’autres évaluations
2.
3.
>>>
nbr=
5
>>>
nbr, "impair"
if
(
nbr %
2
) !=
0
else
"pair"
(
5
, 'impair'
) # Hé oui, la virgule de la ligne précédente crée un tuple !!!
V-9. Quelques outils▲
Quelques outils natifs de Python permettant de générer et manipuler des constantes (ou variables ayant pour valeur ces constantes).
La fonction abs
(
x) renvoie la valeur absolue de x qui doit être un nombre entier ou à virgule flottante.La fonction chr
(
x) renvoie le caractère correspondant à la valeur unicode (ou ASCII dans Python 2) x.La fonction
bin
(
x) renvoie la représentation binaire de l’entier x.La fonction cmp
(
x, y) (Python 2 uniquement) compare les valeurs relatives de x et y et renvoie ‑1, 0 ou 1 selon que x est respectivement plus petit, égal ou plus grand que y.La fonction divmod
(
x, y) renvoie un tuple contenant la division entière et le reste de x par y (concrètement x//
y et x%
y).La fonction eval
(
s) analyse et évalue l’expression s puis l’exécute en tant qu’instruction Python.La fonction
exec
(
s) analyse et évalue l’expression s puis l’exécute en tant que programme Python.La fonction hex
(
x) renvoie la représentation hexadécimale de l’entier x.La fonction oct
(
x) renvoie la représentation octale de l’entier x.La fonction ord
(
x) renvoie la valeur unicode (ou ASCII dans Python 2) du caractère x.La fonction round
(
x, y) renvoie la valeur du flottant x arrondie à y décimales.