Décisions enchaînées

4.5 Décisions enchaînées

Objectifs d'apprentissage

À la fin de cette section, vous devriez être en mesure de :

  • Identifier les branches empruntées dans une instruction if-elif et if-elif-else.
  • Créer une instruction de décision enchaînée pour évaluer plusieurs conditions.

elif

Parfois, une décision complexe repose sur plus d'une seule condition. Ex. : Un site de planification de voyages examine les escales d'un itinéraire. Si une escale dure plus de 24 heures, le site doit suggérer des hébergements. Sinon, si l'escale dure moins d'une heure, le site doit signaler un risque de correspondance manquée.

Deux instructions if distinctes ne garantissent pas qu'une seule branche soit empruntée et peuvent conduire à l'exécution des deux branches. Ex. : Le programme ci-dessous tente d'appliquer un ajustement de note en fonction du score obtenu au test. Si la valeur entrée est 60, les deux instructions if sont exécutées de manière incorrecte et le score final obtenu est 75.

    score = int(input())
    if score < 70:
      score += 10
    # Wrong:
    if 70 <= score < 85:
      score += 5

L'enchaînement d'instructions de décision avec elif permet au programmeur de vérifier plusieurs conditions. Une instruction elif (abréviation de else if) vérifie une condition lorsque la condition de l'instruction de décision précédente est fausse. Une instruction elif fait partie d'une chaîne et doit suivre une instruction if (ou elif).

Modèle d'instruction if-elif :

    # Statements before

    if condition:
      # Body
    elif condition:
      # Body
    
    # Statements after

Faites le point

Exemple : Fonctionnalités de diffusion en direct

Concepts en pratique

Utilisation de elif

1.
Remplissez l'espace vide pour exécuter Body 2 lorsque condition_1 est fausse et condition_2 est vraie.
if condition_1:
  # Body 1
__ condition_2:
  # Body 2
  1. if
  2. elif
  3. else
2.
Sachant que x = 42 et y = 0, quelle est la valeur finale de y ?
if x > 44:
  y += 2
elif x < 50:
  y += 5
  1. 2
  2. 5
  3. 7
3.
Quelles conditions complètent le code de sorte que si x est inférieur à 0, Body 1 s'exécute, sinon si x est égal à 0, Body 2 s'exécute ?
if _________:
  # Body 1
elif _________:
  # Body 2
  1. x < 0
    x == 0
  2. x == 0
    x < 0
  3. x <= 0
    [aucune condition]
4.
Laquelle des propositions suivantes est une instruction de décision enchaînée valide ?
  1. if condition_1:
      # Body 1
    elif condition_2:
      # Body 2
    
  2. if condition_1:
      # Body 1
      elif condition_2:
        # Body 2
    
  3. elif condition_1:
      # Body 1
    if condition_2:
      # Body 2
    
5.
Sachant que attendees = 350, quelle est la valeur finale de rooms ?
rooms = 1
if attendees >= 100:
  rooms += 3
if attendees <= 200:
  rooms += 7
elif attendees <= 400:
  rooms += 14
  1. 4
  2. 15
  3. 18

Instructions if-elif-else

Les instructions elif peuvent être enchaînées avec une instruction if-else pour créer une structure de décision plus complexe. Ex. : Un programme affiche les déplacements possibles aux échecs selon le type de pièce. Si la pièce est un pion, afficher un déplacement vers l'avant d'une (ou deux) cases. Sinon si la pièce est un fou, afficher les déplacements en diagonale. Sinon si . . . (continuer pour le reste des pièces).

Faites le point

Exemple : Déplacements possibles aux échecs

Concepts en pratique

Utilisation de elif dans des instructions if-elif-else

6.
Sachant que hour = 12, qu'est-ce qui est affiché ?
if hour < 8:
  print("Too early")
elif hour < 12:
  print("Good morning")
elif hour < 13:
  print("Lunchtime")
elif hour < 17:
  print("Good afternoon")
else:
  print("Too late")
  1. Good morning
  2. Lunchtime
  3. Good afternoon
  4. Too late
7.
Où peut-on ajouter une instruction elif ?
_1_
if condition:
  # Body
  _2_
elif condition:
  # Body
_3_
else:
  # Body
_4_
  1. 1
  2. 2
  3. 3
  4. 4
8.
Sachant que x = -1 et y = -2, quelle est la valeur finale de y ?
if x < 0 and y < 0:
  y = 10
elif x < 0 and y > 0:
  y = 20
else:
  y = 30
  1. 10
  2. 20
  3. 30
9.
Comment les instructions suivantes pourraient-elles être réécrites sous la forme d'une instruction enchaînée ?
if price < 9.99:
  order = 50
if 9.99 <= price < 19.99:
  order = 30
if price >= 19.99:
  order = 10
  1. if price < 9.99:
      order = 50
    else:
      order = 30
    order = 10
    
  2. if price < 9.99:
      order = 50
    elif price < 19.99:
      order = 30
    elif price == 19.99:
      order = 10
    
  3. if price < 9.99:
      order = 50
    elif price < 19.99:
      order = 30
    else:
      order = 10
    

À vous d'essayer

Conversion de taille de crochet

Écrivez un programme qui lit la taille américaine (US) d'un crochet et calcule son diamètre métrique en millimètres. (Un sous-ensemble de tailles est utilisé.) Si l'entrée ne correspond pas à une valeur comprise entre B et G, le diamètre doit être fixé à -1.0. Ex. : Si la valeur entrée est D, la sortie est "3.25 mm".

Conversions de taille US : mm

  • B : 2.25
  • C : 2.75
  • D : 3.25
  • E : 3.5
  • F : 3.75
  • G : 4.0

À vous d'essayer

Longueurs d'onde des couleurs

Écrivez un programme qui lit un entier représentant une longueur d'onde de lumière visible en nanomètres. Affichez la couleur correspondante en utilisant les plages inclusives suivantes :

  • Violet : 380–449
  • Bleu : 450–484
  • Cyan : 485–499
  • Vert : 500–564
  • Jaune : 565–589
  • Orange : 590–624
  • Rouge : 625–750

Supposons que la valeur entrée se situe dans le spectre de la lumière visible, de 380 à 750 inclus.

Pour l'entrée :

    550

La sortie est :

    Green