Introduction to Python Programming

# 4.6Nested decisions

## 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.

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


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:
if game == 2:
if players < 3:
print("Not enough players")
elif players > 6:
print("Too many players")
else:
# Test game IDs 3-end


## 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

• 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 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.