Introduction to Python Programming

# 4.5Chained decisions

## Learning objectives

By the end of this section you should be able to

• Identify the branches taken in an if-elif and if-elif-else statement.
• Create a chained decision statement to evaluate multiple conditions.

## elif

Sometimes, a complicated decision is based on more than a single condition. Ex: A travel planning site reviews the layovers on an itinerary. If a layover is greater than 24 hours, the site should suggest accommodations. Else if the layover is less than one hour, the site should alert for a possible missed connection.

Two separate if statements do not guarantee that only one branch is taken and might result in both branches being taken. Ex: The program below attempts to add a curve based on the input test score. If the input is 60, both if statements are incorrectly executed, and the resulting score is 75.

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


Chaining decision statements with elif allows the programmer to check for multiple conditions. An elif (short for else if) statement checks a condition when the prior decision statement's condition is false. An elif statement is part of a chain and must follow an if (or elif) statement.

if-elif statement template:

    # Statements before

if condition:
# Body
elif condition:
# Body

# Statements after


## Concepts in Practice

### Using elif

1.
Fill in the blank to execute Body 2 when condition_1 is false and condition_2 is true.
if condition_1:
# Body 1
__ condition_2:
# Body 2

1. if
2. elif
3. else
2.
Given x = 42 and y = 0, what is the final value of y?
if x > 44:
y += 2
elif x < 50:
y += 5

1. 2
2. 5
3. 7
3.
Which conditions complete the code such that if x is less than 0, Body 1 executes, else if x equals 0, Body 2 executes.
if _________:
# Body 1
elif _________:
# Body 2

1. x < 0
x == 0
2. x == 0
x < 0
3. x <= 0
[no condition]
4.
Which of the following is a valid chained decision statement?
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.
Given attendees = 350, what is the final value of rooms?
rooms = 1
if attendees >= 100:
rooms += 3
if attendees <= 200:
rooms += 7
elif attendees <= 400:
rooms += 14

1. 4
2. 15
3. 18

## if-elif-else statements

Elifs can be chained with an if-else statement to create a more complex decision statement. Ex: A program shows possible chess moves depending on the piece type. If the piece is a pawn, show moving forward one (or two) places. Else if the piece is a bishop, show diagonal moves. Else if . . . (finish for the rest of the pieces).

## Concepts in Practice

### Using elif within if-elif-else statements

6.
Given hour = 12, what is printed?
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.
Where can an elif statement be added?
_1_
if condition:
# Body
_2_
elif condition:
# Body
_3_
else:
# Body
_4_

1. 1
2. 2
3. 3
4. 4
8.
Given x = -1 and y = -2, what is the final value of 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.
How could the following statements be rewritten as a chained statement?
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


## Try It

### Crochet hook size conversion

Write a program that reads in a crochet hook's US size and computes the metric diameter in millimeters. (A subset of sizes is used.) If the input does not match B-G, the diameter should be assigned with -1.0. Ex: If the input is D, the output is "3.25 mm".

Size conversions for US size: mm

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

## Try It

### Color wavelengths

Write a program that reads in an integer representing a visible light wavelength in nanometers. Print the corresponding color using the following inclusive ranges:

• Violet: 380–449
• Blue: 450–484
• Cyan: 485–499
• Green: 500–564
• Yellow: 565–589
• Orange: 590–624
• Red: 625–750

Assume the input is within the visible light spectrum, 380-750 inclusive.

Given input:

    550


The output is:

    Green


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.