Skip to ContentGo to accessibility pageKeyboard shortcuts menu
OpenStax Logo

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
  2. Might be poison oak
  3. 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

Citation/Attribution

This book may not be used in the training of large language models or otherwise be ingested into large language models or generative AI offerings without OpenStax's permission.

Want to cite, share, or modify this book? This book uses the Creative Commons Attribution License and you must attribute OpenStax.

Attribution information
  • If you are redistributing all or part of this book in a print format, then you must include on every physical page the following attribution:
    Access for free at https://openstax.org/books/introduction-python-programming/pages/1-introduction
  • If you are redistributing all or part of this book in a digital format, then you must include on every digital page view the following attribution:
    Access for free at https://openstax.org/books/introduction-python-programming/pages/1-introduction
Citation information

© Jul 30, 2024 OpenStax. Textbook content produced by OpenStax is licensed under a Creative Commons Attribution License . The OpenStax name, OpenStax logo, OpenStax book covers, OpenStax CNX name, and OpenStax CNX logo are not subject to the Creative Commons license and may not be reproduced without the prior and express written consent of Rice University.

This book utilizes the OpenStax Python Code Runner. The code runner is developed by Wiley and is All Rights Reserved.