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) <= 05 != 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-2s'évalue à :-
True -
False - on ne peut pas savoir
- message d'erreur
-
-
L'expression
-5<=5-10s'évalue à :-
True -
False - Oui
- message d'erreur
-
-
L'expression
3 != 5s'é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
🐍 Script Python 1 2 3
a = 5 a == 14 b = a + 1bprend 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 ?
| 🐍 Script Python | |
|---|---|
1 2 3 4 | |
| 🐍 Script Python | |
|---|---|
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)
| 🐍 Script Python | |
|---|---|
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 debqui 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 3 Faux car 10 > 5.
- les lignes 4, 5 et 6 ne sont pas exécutées.
14
Je vérifie ma compréhension (bouton en bas pour recommencer)
-
Soit le script suivant :
🐍 Script Python 1 2 3 4
a = 3 if 1 < 2: a = 1 b= a + 3En fin de script, la variable
bprend la valeur :-
1 -
4 -
6 -
7
-
-
Soit le script suivant :
🐍 Script Python 1 2 3 4 5
a , b = 5 , 9 if a>6: b=b-5 if b>=13: b=b+9En fin de script, la variable
bprend la valeur :-
4 -
9 -
13 -
18
-
-
Soit le script suivant :
🐍 Script Python 1 2 3 4 5 6
a = 10 b = 19 if a>6: b=b-4 if b>=14: b=b+7En fin de script, la variable
bprend la valeur :-
15 -
19 -
22 -
26
-
-
Soit le script suivant :
🐍 Script Python 1 2 3 4 5 6
a = 4 b = 15 if a > 9 : b = b-4 if b >= 12: b = b+5En fin de script, la variable
bprend la valeur :-
11 -
15 -
16 -
20
-
-
Soit le script suivant :
🐍 Script Python 1 2 3 4 5 6
a = 9 b = 20 if a > 7 : b = b-10 if b >= 12: b = b+4En fin de script, la variable
bprend la valeur :-
10 -
14 -
20 -
24
-
-
Soit le script suivant :
🐍 Script Python 1 2 3 4 5 6
a = 5 b = 18 if a > 7 : b = b-10 if b >= 12: b = b+4En fin de script, la variable
bprend la valeur :-
8 -
12 -
18 -
22
-
Instructions conditionnelles classiques⚓︎
syntaxe d'une structure conditionnelle classique
- la clef de début
ifsuivi d'un<test>qui prend les valeursTrueouValse - la clef
elsesuivi 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
agepour 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 :
🐍 Script Python 1 2 3 4 5
a=-1 if a<=5: a=a+11 else: a=a-11En fin de script, la variable
aprend la valeur :-
-12 -
-1 -
10 -
12
-
-
Soit le script suivant :
🐍 Script Python 1 2 3 4 5
a=5 if a<=2: a=a+5 else: a=a-3En fin de script, la variable
aprend la valeur :-
2 -
5 -
7 -
10
-
-
Soit le script suivant :
🐍 Script Python 1 2 3 4 5 6 7
a=21 if a>=20: a=a-18 if a<=4: a=a+4 else: a=a-4En fin de script, la variable
aprend la valeur :-
-1 -
7 -
21 -
35
-
-
Soit le script suivant :
🐍 Script Python 1 2 3 4 5 6 7
a=25 if a>=12: a=a-11 if a<=6: a=a+3 else: a=a-3En fin de script, la variable
aprend la valeur :-
11 -
17 -
25 -
33
-
-
Soit le script suivant :
🐍 Script Python 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-3En fin de script, la variable
aprend la valeur :-
2 -
5 -
8 -
9
-
-
Soit le script suivant :
🐍 Script Python 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 - 6En fin de script, la variable
aprend la valeur :-
-17 -
-16 -
-13
-
-
Soit le script suivant :
🐍 Script Python 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 - 9En fin de script, la variable
aprend la valeur :-
-7 -
-2 -
7 -
16
-
-
Soit le script suivant :
On rappelle que
🐍 Script Python 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 - 9x%n(lire \(x\) modulo \(n\)) est le reste de la division dexparn.En fin de script, la variable
aprend la valeur :-
1 -
6 -
10 -
19
-
Instructions conditionnelles avec plusieurs cas⚓︎
syntaxe d'une structure conditionnelle avec plusieurs cas
- la clef de début
ifsuivi d'un<test>qui prend les valeursTrueouValse - le(s) clef(s)
elif(poursinon si) suivies d'un: - la clef
elsesuivie 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
Si
<test1>==True et <test3>==True, l'instruction exécute action_1() et ignore le reste des tests pour exécuter action_6()
- Le nombre de parties
elifest quelconque. - La partie
elsen'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)
Je vérifie ma compréhension (bouton en bas pour recommencer)
-
Soit le script suivant :
🐍 Script Python 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 - 3En fin de script, la variable
aprend la valeur :-
-11 -
-14 -
7
-
-
Soit le script suivant :
🐍 Script Python 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📋 TexteEn fin de script, la variable ```d``` prend la valeur :-
-20 -
-7 -
-2
-
-
Soit le script suivant :
🐍 Script Python 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📋 TexteEn 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)