Le bloc else possède-t-il une condition d'activation ?
Pourquoi dit-on que else est le bloc du cas par défaut ?
Pour quelles notes va-t-on activer le bloc else ?
...CORRECTION...
On ne place jamais aucune condition derrière else. Par contre, ce bloc ne s'active que si le bloc au dessus de lui ne s'est pas activé.
Le bloc else est le bloc par défaut car c'est le bloc qui sera activé si aucun autre bloc au dessus n'a été activé.
Puisque le premier bloc s'active pour les notes STRICTEMENT SUPERIEURES à 10, le bloc par défaut va s'activer pour les notes qui restent : celles qui sont inférieures OU EGALES à 10.
F° Sauvegarder et lancer le PROGRAMME en utilisant la flèche verte dans Thonny.
1
2
3
4
5
6
7
8
9
10
11
note=18commentaire=""ifnote>10:commentaire="Bien !"elifnote<3:commentaire="Vraiment pas bien"elifnote<6:commentaire="Pas bien"else:commentaire="Bof"
Questions
Le bloc elif possède-t-il une condition d'activation ?
Lorsque note vaut 18, que vaut commentaire après exécution du programme ?
Fournir les numéros des lignes rencontrées par l'interpréteur.
...CORRECTION...
Oui, le bloc elif est actif ou pas en fonction de la condition qu'on lui fournit.
Pour une note de 18, on aura "Bien".
Les lignes rencontrées sont 1-2-4-5-FIN.
G° Sauvegarder et lancer le PROGRAMME en utilisant la flèche verte dans Thonny.
1
2
3
4
5
6
7
8
9
10
11
note=5commentaire=""ifnote>10:commentaire="Bien !"elifnote<3:commentaire="Vraiment pas bien"elifnote<6:commentaire="Pas bien"else:commentaire="Bof"
Questions
Lorsque note vaut 5, que vaut commentaire après exécution du programme ?
Fournir les numéros des lignes rencontrées par l'interpréteur.
...CORRECTION...
Pour une note de 5, on aura "Bof".
Les lignes rencontrées sont 1-2-4-6-8-9-FIN.
H° Sauvegarder et lancer le PROGRAMME en utilisant la flèche verte dans Thonny.
1
2
3
4
5
6
7
8
9
10
11
note=2commentaire=""ifnote>10:commentaire="Bien !"elifnote<3:commentaire="Vraiment pas bien"elifnote<6:commentaire="Pas bien"else:commentaire="Bof"
Questions
Lorsque note vaut 2, que vaut commentaire après exécution du programme ?
Fournir les numéros des lignes rencontrées par l'interpréteur.
...CORRECTION...
Pour une note de 2, on aura "Bof".
Les lignes rencontrées sont 1-2-4-6-7-FIN.
Conclusion° Répondre aux questions.
1
2
3
4
5
6
7
8
9
10
11
note=5commentaire=""ifnote>10:commentaire="Bien !"elifnote<3:commentaire="Vraiment pas bien"elifnote<6:commentaire="Pas bien"else:commentaire="Bof"
Questions
Pour quelles notes va-t-on activer le bloc else ?
Doit-on traduire else par "SI...", par "SINON" ou par "SINON, SI..." ?
Doit-on traduire elif par "SI...", par "SINON" ou par "SINON, SI..." ?
Peut-on avoir pour une même note à la fois activation de la ligne 7 et 9 ?
...CORRECTION...
On active potentiellement des blocs pour les notes STRICTEMENT supérieures à 10, STRICTEMENT inférieures à 3 et STRICTEMENT inférieures à 6. Le dernier bloc s'active donc pour des notes de 7, 8, 9 ou 10.
Le bloc else correspond donc à un bloc "SINON". Cela veut dire : SI aucun bloc au dessus n'a été activé alors réalise celui-ci.
Le bloc elif (contraction de else if) correspond donc à un bloc "SINON, SI". Cela veut dire : SI aucun bloc au dessus n'a été activé et que la condition fournie ici est vraie, alors réalise les actions de ce bloc puis sort de la structure.
1.1 Instruction conditionnelle
Une instruction conditionnelle permet d'exécuter un bloc d'instructions uniquement si la condition évaluée est vraie (True en Python).
Ci-dessous, un exemple où on change l'appréciation si la note est bonne (if en anglais)
1
2
3
4
5
6
fatigue="En forme !"appreciation="Moyen"note=20ifnote>15:appreciation="Très bien"fatigue="Grosse fatigue"
TABULATION : le bloc d'instructions à effectuer est décalé de 4 espaces (ligne 5). Ce décalage permet à l'intepréteur Python de signaler le début et la fin du bloc. La ligne 6 n'appartient donc pas au bloc.
Déroulé pour note = 20 : L1-L2-L3-L4-L5-L6
Déroulé pour note = 10 : L1-L2-L3-L4-L6
Traduction :
L3 : note vaut 20.
L4 : si la note fournie est strictement supérieure à 15
L5 tabulée : alors appreciation passe à "Très bien".
L6 : fatigue passe à "Grosse fatigue" (sans condition car pas de tabulation).
Quelque soit le langage, on retrouve toujours une structure qui ressemble à ceci :
1
2
3
4
5
6
7
8
9
10
11
SIune expression booléenne Aestvraie# BLOC A (unique et obligatoire)Instruction A1Instruction A2SINONSIune expression booléenne B est vraie# BLOC B (optionnel(s))Instruction B1Instruction B2SINON(danstouslesautrescas)# BLOC C (unique mais optionnel)Instruction C1Instruction C2
Nombre de blocs
Un unique bloc SI et il doit toujours être en première position
0, 1, 2 ou autant de blocs SINON SI que vous voulez
0 ou 1 bloc SINON et il doit toujours être en dernière position : c'est le bloc par défaut. Si aucun autre n'a été activé, on prend celui-ci.
1.3 Instruction conditionnelle : un seul bloc exécuté
A SAVOIR IMPERATIVEMENT
L'interpréteur Python n'exécute que l'un des blocs A, B ou C d'une structure if-elif-else.
Il exécute les instructions du bloc de la première expression évaluée à True puis quitte la structure même si les autres expressions sont vraies également.
Un exemple de déroulement
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Instructions Avant 1
Instructions Avant 2
ifnote>11:# BLOC A (unique et obligatoire)
Instruction A1
Instruction A2
Instruction A3 elifnote<9:# BLOC B (optionnel(s))
Instruction B1
Instruction B2
Instruction B3 else:# BLOC C (unique et optionnel)
Instruction C1
Instruction C2
Instructions Après 1
Instructions Après 2
Bloc A if : SI l'expression A (note>11) est évaluée à True,
il exécute L1-L2-L4-L5-L6-L7-L18-L19.
Bloc B elif : SINON, SI l'expression B (note<9) est évaluée à True, cela veut dire que la note n'est pas supérieure à 11 mais inférieure à 9.
Il exécute L1-L2-L4-L9-L10-L11-L12-L18-L19.
Bloc C else : on atteint ce bloc si la note n'est ni supérieure à 11, ni inférieuree à 9. C'est donc qu'elle vaut 9, 10 ou 11.
Il exécute L1-L2-L4-L9-L14-L15-L16-L18-L19.
02° Compléter le programme pour qu'il gère un dé à 6 faces "explosif" : on tire un dé et s'il donne 6, on rajoute au résultat un deuxième dé à six faces.
Exemple : on tire 4. On garde juste 4 pour le résultat final.
Exemple 2 : on tire 6 donc on retire un dé qui donne par exemple 4. Le résultat final est donc 10.
1
2
3
4
5
6
7
8
9
10
11
12
13
fromrandomimportrandintde1=randint(1,6)# Nombre au hasard entre 1 et 6ifde1...:print("Explosion !")de2=...total=...+...else:total=...print("Vous avez obtenu : ")print(total)
...CORRECTION...
03° Compléter le programme suivant pour qu'il renvoie le nom de l'élève le plus grand. Leurs tailles sont tirées au hasard entre 150 cm et 200 cm à l'aide des lignes ... et ...
fromrandomimportrandintnom_1="Alice"taille_1=randint(150,200)# Nombre au hasard entre 150 et 200nom_2="Bob"taille_2=randint(150,200)# Nombre au hasard entre 150 et 200nom_3="Charlie"taille_3=randint(150,200)# Nombre au hasard entre 150 et 200nom_du_plus_grand=""# Plusieurs à compléter pour trouverprint("Vous pensez que le plus grand est : "+nom_du_plus_grand)print("Les trois tailles étaient :")print(nom_1)print(taille_1)print(nom_2)print(taille_2)print(nom_3)print(taille_3)