Décisions imbriquées

4.6 Décisions imbriquées

Objectifs d'apprentissage

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

  • Décrire les chemins d'exécution de programmes comportant des instructions if-else imbriquées.
  • Implémenter un programme comportant des instructions if-else imbriquées.

Instructions de décision imbriquées

Supposons qu'un programmeur écrive un programme qui lit l'identifiant d'un jeu ainsi que le nombre de joueurs et affiche si l'utilisateur dispose du bon nombre de joueurs pour ce jeu.

Le programmeur peut commencer ainsi :

    if game == 1 and players < 2:
      print("Not enough players")
    if game == 1 and players > 4:
      print("Too many players")
    if game == 1 and (2 <= players <= 4):
      print("Ready to start")
    if game == 2 and players < 3:
      print("Not enough players")
    if game == 2 and players > 6:
      print("Too many players")
    if game == 2 and (3 <= players <= 6):
      print("Ready to start")

Le programmeur se rend compte que le code est redondant. Et s'il pouvait d'abord évaluer l'identifiant du jeu, puis prendre une décision concernant les joueurs ? L'imbrication permet de placer une instruction de décision à l'intérieur d'une autre instruction de décision, ce qui est indiqué par un niveau d'indentation.

Un programme amélioré :

    if game == 1:
      if players < 2:
        print("Not enough players")
      elif players > 4:
        print("Too many players")
      else:
        print("Ready to start")
    if game == 2:
      if players < 3:
        print("Not enough players")
      elif players > 6:
        print("Too many players")
      else:
        print("Ready to start")
    # Test game IDs 3-end

Faites le point

Exemple : Identification des plantes toxiques

Concepts en pratique

Utilisation d'instructions if-else imbriquées

1.
Considérez l'exemple ci-dessus. Étant donné leaf_count = 9 et leaf_shape = "teardrop", quelle est la sortie ?
  1. Might be poison ivy
  2. Might be poison oak
  3. Might be poison sumac
2.
Étant donné num_dancers = 49, qu'est-ce qui est affiché ?
if num_dancers < 0:
  print("Error: num_dancers is negative")
else:
  if num_dancers % 2 == 1:
    print("Error: num_dancers is odd")
  print(num_dancers, "dancers")
  1. Error: num_dancers is odd
  2. 49 dancers
  3. Error: num_dancers is odd
    49 dancers
3.
Étant donné x = 256, y = 513 et max = 512, lequel des blocs suivants sera exécuté ?
if x == y:
  # Body 1
elif x < y:
  # Body 2
  if y >= max:
    # Body 3
  else:
    # Body 4
else:
  # Body 5
  1. Body 2
  2. Body 2, Body 3
  3. Body 2, Body 5
4.
Étant donné x =118, y = 300 et max = 512, lequel des blocs suivants sera exécuté ?
if x == y:
  # Body 1
elif x < y:
  # Body 2
  if y >= max:
    # Body 3
else:
  # Body 4
else:
  # Body 5
  1. Body 2
  2. Body 3
  3. Error

À vous d'essayer

Commandes de repas

Écrivez un programme qui lit une chaîne de caractères, "lunch" ou "dinner", représentant le choix du menu, et un entier, 1, 2 ou 3, représentant le choix de repas de l'utilisateur. Le programme affiche ensuite le choix de repas de l'utilisateur.

Options de repas pour le déjeuner

  • 1 : Salade César
  • 2 : Wrap au poulet épicé
  • 3 : Soupe de courge butternut

Options de repas pour le dîner

  • 1 : Saumon au four
  • 2 : Burger de dinde
  • 3 : Risotto aux champignons

Ex. : Si l'entrée est :
lunch
3

La sortie est :
Your order: Butternut squash soup