SNT Python 3

Identification

Infoforall

5 - Instruction conditionnelle


Aujourd'hui, nous allons voir les instructions conditionnelles.

Instruction conditionnelle  avec Scratch
Les instructions conditionnelles avec Scratch

Nous allons voir comment faire comprendre cela à l'interpréteur Python.

IDE Python proposé : Thonny

Documents de cours : pdf ou odt.

Feuille d'exercices : pdf ou odt.

1 - Description de la structure

Le principe est simple : on évalue une expression booléenne.

Si elle est vraie (True avec Python), on exécute l'instruction ou les instructions qui sont décalées de 4 espaces.

Sinon, c'est que la condition est fausse (False avec Python): on exécute alors le bloc par défaut s'il existe.

A° Sauvegarder et lancer le PROGRAMME en utilisant la flèche verte dans Thonny.

1 2 3 4 5
note = 18 commentaire = "" if note > 10: commentaire = "Bien !"

Questions

  1. Lorsque note vaut 18, que vaut commentaire après exécution ?
  2. Fournir les numéros des lignes rencontrées par l'intepréteur.

...CORRECTION...

Pour une note de 18, on aura "Bien".

Les lignes rencontrées sont 1-2-4-5-FIN.

B° Sauvegarder et lancer le PROGRAMME en utilisant la flèche verte dans Thonny.

1 2 3 4 5
note = 5 commentaire = "" if note > 10: commentaire = "Bien !"

Questions

  1. Lorsque note vaut 5, que vaut commentaire après exécution du programme ?
  2. Fournir les numéros des lignes rencontrées par l'interpréteur.

...CORRECTION...

Pour une note de 5, on aura "".

Les lignes rencontrées sont 1-2-4-FIN.

C° Sauvegarder et lancer le PROGRAMME en utilisant la flèche verte dans Thonny.

1 2 3 4 5 6 7
note = 18 commentaire = "" if note > 10: commentaire = "Bien !" else: commentaire = "Bof"

Questions

  1. Lorsque note vaut 18, que vaut commentaire après exécution du programme ?
  2. Fournir les numéros des lignes rencontrées par l'interpréteur.
  3. Lorsque note vaut 5, que vaut commentaire après exécution du programme ?

...CORRECTION...

  1. Pour une note de 18, on aura "Bien".
  2. Les lignes rencontrées sont 1-2-4-5-FIN.

D° Sauvegarder et lancer le PROGRAMME en utilisant la flèche verte dans Thonny.

1 2 3 4 5 6 7
note = 5 commentaire = "" if note > 10: commentaire = "Bien !" else: commentaire = "Bof"

Questions

  1. Lorsque note vaut 5, que vaut commentaire après exécution du programme ?
  2. Fournir les numéros des lignes rencontrées par l'interpréteur.

...CORRECTION...

  1. Pour une note de 5, on aura "Bof".
  2. Les lignes rencontrées sont 1-2-4-6-7-FIN.

E° Répondre aux questions.

1 2 3 4 5 6 7
note = 18 commentaire = "" if note > 10: commentaire = "Bien !" else: commentaire = "Bof"

Questions

  1. Le bloc else possède-t-il une condition d'activation ?
  2. Pourquoi dit-on que else est le bloc du cas par défaut ?
  3. Pour quelles notes va-t-on activer le bloc else ?

...CORRECTION...

  1. 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é.
  2. 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é.
  3. 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 = 18 commentaire = "" if note > 10: commentaire = "Bien !" elif note < 3: commentaire = "Vraiment pas bien" elif note < 6: commentaire = "Pas bien" else: commentaire = "Bof"

Questions

  1. Le bloc elif possède-t-il une condition d'activation ?
  2. Lorsque note vaut 18, que vaut commentaire après exécution du programme ?
  3. Fournir les numéros des lignes rencontrées par l'interpréteur.

...CORRECTION...

  1. Oui, le bloc elif est actif ou pas en fonction de la condition qu'on lui fournit.
  2. Pour une note de 18, on aura "Bien".
  3. 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 = 5 commentaire = "" if note > 10: commentaire = "Bien !" elif note < 3: commentaire = "Vraiment pas bien" elif note < 6: commentaire = "Pas bien" else: commentaire = "Bof"

Questions

  1. Lorsque note vaut 5, que vaut commentaire après exécution du programme ?
  2. Fournir les numéros des lignes rencontrées par l'interpréteur.

...CORRECTION...

  1. Pour une note de 5, on aura "Bof".
  2. 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 = 2 commentaire = "" if note > 10: commentaire = "Bien !" elif note < 3: commentaire = "Vraiment pas bien" elif note < 6: commentaire = "Pas bien" else: commentaire = "Bof"

Questions

  1. Lorsque note vaut 2, que vaut commentaire après exécution du programme ?
  2. Fournir les numéros des lignes rencontrées par l'interpréteur.

...CORRECTION...

  1. Pour une note de 2, on aura "Bof".
  2. 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 = 5 commentaire = "" if note > 10: commentaire = "Bien !" elif note < 3: commentaire = "Vraiment pas bien" elif note < 6: commentaire = "Pas bien" else: commentaire = "Bof"

Questions

  1. Pour quelles notes va-t-on activer le bloc else ?
  2. Doit-on traduire else par "SI...", par "SINON" ou par "SINON, SI..." ?
  3. Doit-on traduire elif par "SI...", par "SINON" ou par "SINON, SI..." ?
  4. Peut-on avoir pour une même note à la fois activation de la ligne 7 et 9 ?

...CORRECTION...

  1. 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.
  2. 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.
  3. 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 = 20 if note > 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).
1.2 Instruction conditionnelle : structure générale

Quelque soit le langage, on retrouve toujours une structure qui ressemble à ceci :

1 2 3 4 5 6 7 8 9 10 11
SI une expression booléenne A est vraie # BLOC A (unique et obligatoire) Instruction A1 Instruction A2 SINON SI une expression booléenne B est vraie # BLOC B (optionnel(s)) Instruction B1 Instruction B2 SINON (dans tous les autres cas) # BLOC C (unique mais optionnel) Instruction C1 Instruction 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 if note > 11: # BLOC A (unique et obligatoire) Instruction A1 Instruction A2 Instruction A3 elif note < 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.

2 - Exercices

01° Compléter le programme suivant pour qu'il puisse traduire au moins les couleurs "rouge", "vert", "bleu" et "noir".

1 2 3 4 5 6 7 8 9
mot = "bleu" traduction = "" if mot == "bleu": traduction = "blue" elif ...: ... elif ...: ...

...CORRECTION...

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
from random import randint de1 = randint(1, 6) # Nombre au hasard entre 1 et 6 if de1 ...: 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 ...

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
from random import randint nom_1 = "Alice" taille_1 = randint(150, 200) # Nombre au hasard entre 150 et 200 nom_2 = "Bob" taille_2 = randint(150, 200) # Nombre au hasard entre 150 et 200 nom_3 = "Charlie" taille_3 = randint(150, 200) # Nombre au hasard entre 150 et 200 nom_du_plus_grand = "" # Plusieurs à compléter pour trouver print("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)

...CORRECTION...

3 - Py-rates

04° Connectez-vous sur le site py-rates.fr. Choississez votre personnage, et notez bien le numéro qui vous permettra de continuer de chez vous.

Il vous reste à passer les niveaux 4 et 5.

Activité publiée le 15 12 2022
Dernière modification : 15 12 2022
Auteur : ows. h.