Geekflare is supported by our audience. We may earn affiliate commissions from buying links on this site.
In Development Last updated: September 6, 2023
Share on:
Invicti Web Application Security Scanner – the only solution that delivers automatic verification of vulnerabilities with Proof-Based Scanning™.

Want to implement a switch-case construct in Python? Learn the different approaches you can take to emulate switch-case behavior.

If you’ve programmed in C or JavaScript, you’ll have used the switch-case statement. But why do we need a switch-case construct?

Suppose you have a set of different actions (or code blocks). And which action you perform (the code block to execute) depends on the value of a variable or an expression. 

Some examples include:

  • Assigning grades to students based on their scores 
  • Choosing string manipulation techniques based on the user’s choice
  • Performing arithmetic operations on two numbers depending on the user input

So the switch-case construct provides a convenient way to implement such logic. When you need to execute—based on the variable or expression’s value—one of the many possible actions.

While Python doesn’t have a built-in switch-case construct, there are several approaches you can use to achieve similar functionality. In this article, we’ll explore these approaches.

Emulating Switch-Case Behavior in Python

Let’s see how we can emulate switch-case behavior in Python by taking an example.

We’ll write a simple program that does the following:

  • Sample a word, a Python string, at random from a list of words.
  • Provide context and prompt the user. Define the string operations—string manipulation—to perform on the chosen word.
  • Account for operations for case change (lowercase, uppercase, titlecase, and more) including a default behavior. Use built-in Python string methods as needed.
  • Prompt the user for input. Because the input, by default, is a string, convert it to an int by type casting.

Python strings are immutable. So the string methods do not modify the original string. Rather they return a copy of the string with the required changes. Let’s review the Python string methods we’ll use:

String MethodDescription
lower()Returns a copy of the string where all characters are in lower case
upper()Returns a copy of the string where all characters are in upper case
title()Returns a copy of the string formatted in title case
swapcase()Returns a copy of the string where the lower and upper case characters are converted to upper and lowercase, respectively

The following code snippet samples a word from word_list at random and fetches user input:

import random

# List of words to choose from
word_list = ["Python", "programming", "Hello", "world", "context", "Switch"]

# Randomly select a word from the list
word = random.choice(word_list)

# Provide context and available options to the user
print("Welcome! You have a randomly selected word.")
print("Choose an option to manipulate the word:")
print("1. Lowercase")
print("2. Uppercase")
print("3. Titlecase")
print("4. Swapcase")
print("5. Default behavior")

# Get user option
option = int(input("Enter your option: "))

Here’s an example showing how the string ‘Python’ is modified based on the user’s choice:

python-switch-case

When you now run the program, you should be prompted for the input like so:

Welcome! You have a randomly selected word.

Choose an option to manipulate the word:
1. Lowercase
2. Uppercase
3. Titlecase
4. Swapcase
5. Default behavior

Enter your option: 

Next, let’s proceed to implement the different approaches.

Using If-Elif-Else Ladder

In this approach, we use a series of if-elif-else statements to check the user’s choice against predefined options. We then execute a corresponding block of code based on the user’s input.

# if-elif-else 

if option == 1:
    result = word.lower()
elif option == 2:
    result = word.upper()
elif option == 3:
    result = word.title()
elif option == 4:
    result = word.swapcase()
else:
    result = word

print(f"Your random word is {word} and the result is {result}")

Here:

  • We compare the user’s input to each option using if-elif statements.
  • When a match is found, we execute the corresponding code block.
  • If none of the if-elif conditions match, we execute the else block for default behavior.

You can run the script now, enter the choice, and verify the output:

Welcome! You have a randomly selected word

Choose an option to manipulate the word:
1. Lowercase
2. Uppercase
3. Titlecase
4. Swapcase
5. Default behavior

Enter your option: 2

Your random word is Switch and the result is SWITCH.

The if-elif-else ladder is easy to implement. But it can be a challenge to maintain. In this example, we had five cases (including the default behavior). In practice, however, we may have many more cases. Such long if-elif-else ladders are a code smell you should avoid.

So let’s proceed to an implementation that’s maintainable.

Using Dictionary Mapping and First-Class Functions

You can leverage Python dictionaries and functions to emulate switch-case behavior.

📑 Python Functions Are First-Class Citizens

In Python, functions are first-class citizens. You can do much more than just defining and calling functions:

  • Once you define a function, you can assign it to another variable, use functions as elements of lists, values in a dictionary, and much more.
  • You can also pass them around: functions can be passed in as arguments to other functions and functions can return functions.

In this approach, we’ll use a dictionary to map user choices to corresponding functions or actions. This is a more efficient way to handle multiple choices, as it avoids a long chain of if-elif statements.

First, let’s define the following functions for the various string operations:

# Define functions for each option
def lower_case(word):
    return word.lower()

def upper_case(word):
    return word.upper()

def title_case(word):
    return word.title()

def swap_case(word):
    return word.swapcase()

Next, let’s do the following:

  • Create a dictionary called choices where the keys are user choices, and values are functions or actions to perform.
  • Use the dictionary method get() to retrieve the selected action based on the user’s choice. If the choice is not found in the dictionary, we provide a default action specified by a lambda function.
  • Then execute the selected action on the random word.
# Store functions in a dictionary
options = {
    1: lower_case,
    2: upper_case,
    3: title_case,
    4: swap_case,
}

# Use the dictionary to select and call the appropriate function
result = options.get(option, lambda x: x)(word)

print(f"Your random word is {word} and the result is {result}")

Here’s a sample output:

Welcome! You have a randomly selected word.

Choose an option to manipulate the word:
1. Lowercase
2. Uppercase
3. Titlecase
4. Swapcase
5. Default behavior

Enter your option: 4

Your random word is Hello and the result is hELLO.

Using Match-Case

📝 Note: You need Python 3.10 or a later version to use match-case statements.

Starting from Python 3.10, you can use the match statement to implement a switch-case-like construct. The match statement with its simple syntax provides a more intuitive way to handle multiple cases. The _ (underscore) serves as the default case.

Here’s how we can re-write our example using match-case:

  • We use the match statement to compare the user’s input against various cases.
  • Each case specifies a choice and the code to execute if that choice matches.
  • The _ (underscore) serves as a default case, executing code when none of the other cases match.
match option:
    case 1:
        result =  word.lower()
    case 2:
        result = word.upper()
    case 3:
        result = word.title()
    case 4:
        result = word.swapcase()
    case _:
        result = word  # Default behavior, return the string as is

print(f"Your random word is {word} and the result is {result}.")

You can now run the script and verify the output:

Welcome! You have a randomly selected word.

Choose an option to manipulate the word:
1. Lowercase
2. Uppercase
3. Titlecase
4. Swapcase
5. Default behavior

Enter your option: 2
Your random word is world and the result is WORLD.

⚙ Though the match statement provides a convenient way to implement a switch-case construct, it’s intended for more helpful structural pattern matching tasks beyond emulating switch-case behavior.

Wrapping Up

Let’s summarize the different approaches to achieve switch-case functionality in Python:

  • The if-elif-else ladder is easy to implement but is a pain to maintain. So use them minimally—only when you don’t have too many options to check for.
  • You can leverage Python dictionaries and functions to emulate switch-case behavior. Include the different choices and the corresponding functions as the keys and values of the dictionary, respectively.
  • The match-case statement, introduced in Python 3.10, helps implement this switch-case construct with a simple and intuitive syntax. However, the match-case statement is a great choice for more interesting structural pattern-matching use cases.

You can find the code examples for this tutorial on GitHub. If you’re preparing for coding interviews, check out this compilation of top Python interview questions.

  • Bala Priya C
    Author
    Bala Priya is a developer and technical writer from India with over three years of experience in the technical content writing space. She shares her learning with the developer community by authoring tech tutorials, how-to guides, and more…. read more
  • Narendra Mohan Mittal
    Editor

    Narendra Mohan Mittal is a Senior Digital Branding Strategist and Content Editor with over 12 years of versatile experience. He holds an M-Tech (Gold Medalist) and B-Tech (Gold Medalist) in Computer Science & Engineering.


    read more
Thanks to our Sponsors
More great readings on Development
Power Your Business
Some of the tools and services to help your business grow.
  • Invicti uses the Proof-Based Scanning™ to automatically verify the identified vulnerabilities and generate actionable results within just hours.
    Try Invicti
  • Web scraping, residential proxy, proxy manager, web unlocker, search engine crawler, and all you need to collect web data.
    Try Brightdata
  • Monday.com is an all-in-one work OS to help you manage projects, tasks, work, sales, CRM, operations, workflows, and more.
    Try Monday
  • Intruder is an online vulnerability scanner that finds cyber security weaknesses in your infrastructure, to avoid costly data breaches.
    Try Intruder