Skip to main content
Library homepage
 

Text Color

Text Size

 

Margin Size

 

Font Type

Enable Dyslexic Font
Engineering LibreTexts

4.6: Nested Decisions

( \newcommand{\kernel}{\mathrm{null}\,}\)

Learning Objectives

By the end of this section you should be able to

  • Describe the execution paths of programs with nested if-else statements.
  • Implement a program with nested if-else statements.

Nested decision statements

Suppose a programmer is writing a program that reads in a game ID and player count and prints whether the user has the right number of players for the game.

The programmer may start with:

    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")

The programmer realizes the code is redundant. What if the programmer could decide the game ID first and then make a decision about players? Nesting allows a decision statement to be inside another decision statement, and is indicated by an indentation level.

An improved program:

    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
Checkpoint: Example: Poisonous plant identification
Concepts in Practice: Using nested if-else statements
1.
Consider the example above. Given leaf_count = 9 and leaf_shape = "teardrop", what is the output?
  1. Might be poison ivy
  • Might be poison oak
  • Might be poison sumac
  • 2.
    Given num_dancers = 49, what is printed?
    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.
    Given x = 256, y = 513, and max = 512, which of the following will execute?
    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.
    Given x =118, y = 300, and max = 512, which of the following will execute?
    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
    Try It: Meal orders

    Write a program that reads in a string, "lunch" or "dinner", representing the menu choice, and an integer, 1, 2, or 3, representing the user's meal choice. The program then prints the user's meal choice.

    Lunch Meal Options

    • 1: Caesar salad
    • 2: Spicy chicken wrap
    • 3: Butternut squash soup

    Dinner Meal Options

    • 1: Baked salmon
    • 2: Turkey burger
    • 3: Mushroom risotto

    Ex: If the input is:
    lunch
    3

    The output is:
    Your order: Butternut squash soup


    This page titled 4.6: Nested Decisions is shared under a CC BY 4.0 license and was authored, remixed, and/or curated by OpenStax via source content that was edited to the style and standards of the LibreTexts platform.

    Support Center

    How can we help?