VI. Structures de contrôle▲
VI-A. Vérification de la condition▲
- Vérification simple et combinaison des tests.
>>>
num =
5
>>>
num >
2
True
>>>
num >
3
and
num <=
5
True
>>>
3
<
num <=
5
True
>>>
num %
3
==
0
or
num %
5
==
0
True
>>>
fav_fiction =
'Harry Potter'
>>>
fav_detective =
'Sherlock Holmes'
>>>
fav_fiction ==
fav_detective
False
>>>
fav_fiction ==
"Harry Potter"
True
- Test de la variable ou de la valeur par elle-même.
>>>
bool(
num)
True
>>>
bool(
fav_detective)
True
>>>
bool(
3
)
True
>>>
bool(
0
)
False
>>>
bool(
""
)
False
>>>
bool(
None
)
False
>>>
if
-
1
:
... print
(
"-1 évalue à True dans la vérification de condition"
)
...
-1 évalue à True dans la vérification de condition
- Utilisation de l’opérateur « in » dans la vérification de condition.
Comparez cette méthode de vérification
>>>
def
num_chk
(
n):
... if
n ==
10
or
n ==
21
or
n ==
33
:
... print
(
"Le nombre passe la condition"
)
... else
:
... print
(
"Le nombre ne passe pas la condition"
)
...
>>>
num_chk
(
10
)
Le nombre passe la condition
>>>
num_chk
(
12
)
Le nombre ne passe pas la condition
avec celle-ci
>>>
def
num_chk
(
n):
... if
n in
(
10
, 21
, 33
):
... print
(
"Le nombre passe la condition"
)
... else
:
... print
(
"Le nombre ne passe pas la condition"
)
...
>>>
num_chk
(
12
)
Le nombre ne passe pas la condition
>>>
num_chk
(
10
)
Le nombre passe la condition
- (10, 21, 33) est un type de données tuple. Il sera traité dans les chapitres suivants.
- Python docs - Truth Value Testing
VI-B. if▲
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
#!/usr/bin/python3
num =
45
# only if
if
num >
25
:
print
(
"Hourra! {} est plus grand que 25"
.format
(
num))
# if-else
if
num %
2
==
0
:
print
(
"{} est un nombre pair"
.format
(
num))
else
:
print
(
"{} est un nombre impair"
.format
(
num))
# if-elif-else
# N’importe quel chiffre de elif peut être utilisé
if
num <
0
:
print
(
"{} est un nombre négatif"
.format
(
num))
elif
num >
0
:
print
(
"{} est un nombre positif"
.format
(
num))
else
:
print
(
"{} n’est ni positif ni négatif"
.format
(
num))
-
Le bloc de code pour les fonctions, le contrôle des structures, etc. est distingué par un code de retrait (indentation) :
- une encoche à 4 espaces est recommandée ;
- consultez Python docs - Coding Style pour plus de détails.
- Une erreur de syntaxe commune est d’omettre « : » à la fin des instructions de la structure de contrôle.
- L’utilisation de « () » autour des conditions est optionnelle.
- L’indentation peut avoir un nombre quelconque d’instructions, y compris des lignes vides.
$ ./
if_elif_else.py
Hourra!
45
est plus grand que 25
45
est un nombre impair
45
est un nombre positif
VI-C. if-else comme opérateur de condition▲
2.
3.
4.
5.
6.
#!/usr/bin/python3
num =
42
num_type =
'even'
if
num %
2
==
0
else
'odd'
print
(
"{} is an {} number"
.format
(
num, num_type))
- Contrairement à beaucoup d’autres langages, Python n’a pas d’opérateur conditionnel « ?: ».
- L’utilisation de« if-else »dans une seule ligne comme dans cet exemple est une solution de contournement.
2.
$
./if_else_oneliner.py
42
est un nombre pair
VI-D. for▲
2.
3.
4.
5.
6.
#!/usr/bin/python3
number =
9
for
i in
range(
1
, 5
):
mul_table =
number *
i
print
(
"{} * {} = {}"
.format
(
number, i, mul_table))
-
Une boucle basée sur une itération traditionnelle peut être écrite en utilisant la fonction« range ».
- Rappelez-vous que par défaut« start=0 », « step=1 » et que la valeur« stop »n’est pas incluse.
- Les itérations sur des variables comme list, tuples, etc. seront traitées dans les chapitres suivants.
- La documentation officielle est ici : Python docs – itertools .
2.
3.
4.
5.
$
./for_loop.py
9
* 1
=
9
9
* 2
=
18
9
* 3
=
27
9
* 4
=
36
VI-E. while▲
2.
3.
4.
5.
6.
#!/usr/bin/python3
# toujours demander à l’utilisateur d’insérer un nombre jusqu’à avoir un nombre positif
usr_string =
'Ce n’est pas un nombre'
while
not
usr_string.isnumeric
(
):
usr_string =
input(
"Entrez un entier positif : "
)
- La boucle while nous permet d’exécuter un bloc d’instructions jusqu’à satisfaction d’une condition.
- Python docs - string methods .
2.
3.
4.
5.
$
./while_loop.py
Entrez un entier positif : abc
Entrez un entier positif : 1
.2
Entrez un entier positif : 23
$
VI-F. continue and break▲
Les mots-clefs « continue » et « break » sont utilisés pour modifier le flux normal des boucles dans certaines conditions.
continue – ignore le reste des instructions de la boucle et commence la prochaine itération.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
#!/usr/bin/python3
prev_num =
0
curr_num =
0
print
(
"Les dix premiers nombres de la suite de Fibonacci: "
, end=
''
)
for
num in
range(
10
):
print
(
curr_num, end=
' '
)
if
num ==
0
:
curr_num =
1
continue
temp =
curr_num
curr_num =
curr_num +
prev_num
prev_num =
temp
print
(
""
)
- La fonction « continue » peut être placée n’importe où dans la boucle sans avoir à se soucier de la complication du flux de code.
- Cet exemple est juste pour vous montrer l’utilisation de la fonction « continue », veuillez voir ici pour d’autres méthodes Python.
2.
$
./loop_with_continue.py
Les dix premiers nombres de la suite de Fibonacci: 0
1
1
2
3
5
8
13
21
34
break – ignore le reste des instructions dans la boucle (s’il y en a) et quitte la boucle.
2.
3.
4.
5.
6.
7.
8.
9.
10.
#!/usr/bin/python3
import
random
while
True
:
# comme avec la fonction range(), 500 n’est pas inclus
random_int =
random.randrange
(
500
)
if
random_int %
4
==
0
and
random_int %
6
==
0
:
break
print
(
"Nombre aléatoire divisible par 4 et 6: {}"
.format
(
random_int))
- while True est généralement utilisée comme une boucle infinie.
- randrange a les mêmes arguments de start, stop, step que la fonction range .
- Python docs – random .
2.
3.
4.
5.
$
./loop_with_break.py
Nombre aléatoire divisible par 4
et 6
: 168
$
./loop_with_break.py
Nombre aléatoire divisible par 4
et 6
: 216
$
./loop_with_break.py
Nombre aléatoire divisible par 4
et 6
: 24
L’exemple while_loop.py peut être réécrit en utilisant la fonction « break ».
2.
3.
4.
5.
6.
7.
8.
9.
>>>
while
True
:
usr_string =
input(
"Entrez un entier positif : "
)
if
usr_string.isnumeric
(
):
break
Entrez un entier positif : a
Entrez un entier positif : 3.14
Entrez un entier positif : 1
>>>
- Dans le cas de boucles imbriquées, les fonctions « continue » et « break » n’affectent que la boucle parente immédiate.
- Python docs - else clauses on loops .