Les instructions conditionnelles⚓︎
Les opérateurs de comparaisons⚓︎
Opération | Comparaison | Exemple |
---|---|---|
x==y |
teste si x est égal à y |
6==3**2 renvoie False 8==2**3 renvoie True |
x!=y |
teste si x n'est pas égal à y |
9!=9 renvoie False 9!=8 renvoie True |
x<y |
teste si x est strictement inférieur à y |
5<5 renvoie False 3>-5 renvoie True |
x<=y |
teste si x est inférieur ou égal à y |
2>=0 renvoie True 1>=1 renvoie True |
Example
- Tester les comparaisons suivantes dans la console.
153 > 98
(6 - 6) <= 0
5 != 10 + 5
- Tester un encadrement :
console
>>> x = 35 * 47 >>> 1000<= x <= 2000
Ne pas mélanger ==
avec l'opérateur d'affectation =
script A | |
---|---|
1 2 3 |
|
La ligne 2 modifie la valeur de a
.
La ligne 3 affiche 17
.
script B | |
---|---|
1 2 3 |
|
La ligne 2 renvoie False
.
La ligne 3 affiche 7
.
Je vérifie ma compréhension (bouton en bas pour recommencer)
-
L'expression
3==5-2
s'évalue à :-
True
-
False
- on ne peut pas savoir
- message d'erreur
-
-
L'expression
-5<=5-10
s'évalue à :-
True
-
False
- Oui
- message d'erreur
-
-
L'expression
3 != 5
s'évalue à :-
True
-
False
- Non
- message d'erreur
-
-
L'expression
20== '20'
s'évalue à :-
True
-
False
- message d'erreur
-
-
Soit le code suivant :
En fin de script
1 2 3
a = 5 a == 14 b = a + 1
b
prend la valeur :-
6
-
15
-
'51'
-
'141'
-
Tests de valeurs sur float
⚓︎
Tests de valeurs sur des float
Lorsque l'on souhaite tester la valeur d'une variable de type float, le premier réflexe serait d'utiliser l'opérateur d'égalité comme : (exécuter le script)
Cette approche est déconseillée. Les valeurs de type float
amènent certaines limitations.
Nous voyons que le résultat de l'opération 0.1+0.2
n'est pas exactement 0.3
d'où le False
! Ce problème vient de la manière dont un ordinateur traite les nombres flottants (comme rapport de nombres en binaires). Certaines valeurs de type float
ne peuvent être qu'approchées :
La valeur 0.3
est en réalité arrondie à \(10^{-17}\) près ! De même, la valeur renvoyée par 0.1+0.2
est :
TLDR 1 : Ne surtout pas tester si des valeurs de type float
sont égales.
Conseil
Pour les valeurs de type float
on utilisera soit des encadrements :
soit l'instruction valeur absolue abs()
:
Instructions conditionnelles simples⚓︎
syntaxe d'un test simple
Une structure conditionnelle simple comporte :
- la clef de début if
suivie d'un <test>
qui prend les valeurs True
ou Valse
- le corps du test contient les actions à exécuter si la valeur de <test>
est True
.
Les instructions sont indentés (comme pour les fonctions) à l'aide de la touche ++Tab++
- la sortie de le la structure est signalée par l'absence d'indentation.
if <test> : # (1)!
action1()
action2() # (2)!
action3() # (3)!
-
Les deux points sont obligatoires
-
action1()
etaction2()
sont exécutées si la condition<test>==True
-
action3()
sera faite ensuite dans tous les cas.
un premier exemple
- Exécuter le script ci-dessous et vérifier que la ligne 3 n'est pas exécutée.
- Modifier la ligne 1 afin d'affecter la valeur
20
. Vérifier que les lignes 3 et 4 sont exécutées.
importance de l'indentation
Comparer les scripts A et B ci-dessous. Quel script exécutera la ligne 4 ?
1 2 3 4 |
|
1 2 3 4 |
|
Solution
Comme chaine=="bateau"
, len(chaine)==6
.
Le test len(chaine) < 6
a pour valeur False
.
Le script A exécute toujours la ligne 4 car elle ne fait pas partie de l'instruction conditionelle.
Le script B n'exécute pas la ligne 4 car elle fait partie du bloc de l'instruction conditionelle.
controler le déroulement (1)
1 2 3 4 5 6 |
|
Quelle est la valeur de b
en fin de script ?
- 13
- 9
- 19
- 23
13Faux car 10 > 5. La ligne 4 et donc exécutée.9
1923Faux car à la ligne 4 on a une nouvelle affectation deb
qui ne respecte plus la condition du if de la ligne 5.
controler le déroulement (2)
script python | |
---|---|
1 2 3 4 5 6 |
|
Quelle est la valeur de b
en fin de script ?
- 13
- 14
- 21
- 22
Le test de la ligne 5
-
13 Faux car 10 > 5. La ligne 4 et donc exécutée.
- 9
-
19
-
23 Faux car à la ligne 4 on a une nouvelle affectation de b
qui ne respecte plus la condition du if de la ligne 5.
Je vérifie ma compréhension (bouton en bas pour recommencer)
-
Soit le script suivant :
1 2 3 4
a = 3 if 1 < 2: a = 1 b= a + 3
En fin de script, la variable
b
prend la valeur :-
1
-
4
-
6
-
7
-
-
Soit le script suivant :
1 2 3 4 5
a , b = 5 , 9 if a>6: b=b-5 if b>=13: b=b+9
En fin de script, la variable
b
prend la valeur :-
4
-
9
-
13
-
18
-
-
Soit le script suivant :
1 2 3 4 5 6
a = 10 b = 19 if a>6: b=b-4 if b>=14: b=b+7
En fin de script, la variable
b
prend la valeur :-
15
-
19
-
22
-
26
-
-
Soit le script suivant :
1 2 3 4 5 6
a = 4 b = 15 if a > 9 : b = b-4 if b >= 12: b = b+5
En fin de script, la variable
b
prend la valeur :-
11
-
15
-
16
-
20
-
-
Soit le script suivant :
1 2 3 4 5 6
a = 9 b = 20 if a > 7 : b = b-10 if b >= 12: b = b+4
En fin de script, la variable
b
prend la valeur :-
10
-
14
-
20
-
24
-
-
Soit le script suivant :
1 2 3 4 5 6
a = 5 b = 18 if a > 7 : b = b-10 if b >= 12: b = b+4
En fin de script, la variable
b
prend la valeur :-
8
-
12
-
18
-
22
-
Instructions conditionnelles classiques⚓︎
syntaxe d'une structure conditionnelle classique
- la clef de début
if
suivi d'un<test>
qui prend les valeursTrue
ouValse
- la clef
else
suivi d'un:
- la sortie de le la structure est signalée par l'absence d'indentation.
script python | |
---|---|
1 2 3 4 5 6 7 8 9 |
|
deux points obligatoires
deux points obligatoires
Example
- Exécuter le script ci-dessous et vérifier qu'il affiche
"Vous pouvez voter"
etVous observerez le résultat
- Modifier la valeur de
age
pour la valeur \(15\). Qu'affiche le script ?
# Tests
(insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)
Je vérifie ma compréhension (bouton en bas pour recommencer)
-
Soit le script suivant :
1 2 3 4 5
a=-1 if a<=5: a=a+11 else: a=a-11
En fin de script, la variable
a
prend la valeur :-
-12
-
-1
-
10
-
12
-
-
Soit le script suivant :
1 2 3 4 5
a=5 if a<=2: a=a+5 else: a=a-3
En fin de script, la variable
a
prend la valeur :-
2
-
5
-
7
-
10
-
-
Soit le script suivant :
1 2 3 4 5 6 7
a=21 if a>=20: a=a-18 if a<=4: a=a+4 else: a=a-4
En fin de script, la variable
a
prend la valeur :-
-1
-
7
-
21
-
35
-
-
Soit le script suivant :
1 2 3 4 5 6 7
a=25 if a>=12: a=a-11 if a<=6: a=a+3 else: a=a-3
En fin de script, la variable
a
prend la valeur :-
11
-
17
-
25
-
33
-
-
Soit le script suivant :
1 2 3 4 5 6 7 8 9 10
a = 5 b = 9 if a>=0 : b=b-7 else : b=b+7 if b>0 : a=a+3 else : a=a-3
En fin de script, la variable
a
prend la valeur :-
2
-
5
-
8
-
9
-
-
Soit le script suivant :
1 2 3 4 5 6 7 8 9 10
a = -10 b = -15 if a >= 0 : b = b - 2 else: b = b + 2 if b > 0 : a = a + 6 else: a = a - 6
En fin de script, la variable
a
prend la valeur :-
-17
-
-16
-
-13
-
-
Soit le script suivant :
1 2 3 4 5 6 7 8 9 10
a = 7 b = 0 if a >= 0 : b = b - 7 else: b = b + 7 if b > 0 : a = a + 9 else: a = a - 9
En fin de script, la variable
a
prend la valeur :-
-7
-
-2
-
7
-
16
-
-
Soit le script suivant :
On rappelle que
1 2 3 4 5 6 7 8 9 10
a = 10 b = 6 if a % 2 == 1 : b = b - 7 else: b = b + 7 if b % 3 == 2 : a = a + 9 else : a = a - 9
x%n
(lire \(x\) modulo \(n\)) est le reste de la division dex
parn
.En fin de script, la variable
a
prend la valeur :-
1
-
6
-
10
-
19
-
Instructions conditionnelles avec plusieurs cas⚓︎
syntaxe d'une structure conditionnelle avec plusieurs cas
- la clef de début
if
suivi d'un<test>
qui prend les valeursTrue
ouValse
- le(s) clef(s)
elif
(poursinon si
) suivies d'un:
- la clef
else
suivie d'un:
- la sortie de le la structure est signalée par l'absence d'indentation.
script python | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
|
deux points obligatoires
deux points obligatoires
deux points obligatoires
deux points obligatoires
-
deux points obligatoires
-
Le nombre de parties
elif
est quelconque. - La partie
else
n'est pas obligatoire.
Si la clef
else :
n'est pas utilisée, et si la valeur de tous les tests estFalse
, alors l'instruction conditionnelle n'exécute aucun des blocs.
triangles rectangles
- Exécuter le script et vérifier qu'il affiche que le triangle est rectangle en \(C\).
- On considère le nouveau triangle \(ABC\) tel que \(AC=13\), \(AB=5\) et \(BC=12\). Modifier le scirpt afin de faire afficher la nature du nouveau triangle.
# Tests
(insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)
Si
<test1>==True
et <test3>==True
, l'instruction exécute action_1()
et ignore le reste des tests pour exécuter action_6()
Je vérifie ma compréhension (bouton en bas pour recommencer)
-
Soit le script suivant :
1 2 3 4 5 6 7 8
a = 10 b = -11 if a >= 0: a = b - 3 elif b < 0: a = a + 3 else: a = a - 3
En fin de script, la variable
a
prend la valeur :-
-11
-
-14
-
7
-
-
Soit le script suivant :
1 2 3 4 5 6 7 8 9
a = -20 b = -7 c = -2 if a > b: d = a elif b > c: d = b else: d = c
En fin de script, la variable ```d``` prend la valeur :
-
-20
-
-7
-
-2
-
-
Soit le script suivant :
1 2 3 4 5 6 7 8 9
a = 10 b = 19 c = -15 if a > b: d = a elif b > c: d = b else: d = c
En fin de script, la variable ```d``` prend la valeur :
-
10
-
19
-
-15
-
-
too long; didn’t read pour trop long; pas lu. ↩
# Tests
(insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)