Question :
What is the Python equivalent for a case/switch statement? [duplicate]
I’d like to know, is there a Python equivalent for the case statement such as the examples available on VB.net or C#?
Answer #1:
While the official docs are happy not to provide switch, I have seen a solution using dictionaries.
For example:
# define the function blocks
def zero():
print "You typed zero.n"
def sqr():
print "n is a perfect squaren"
def even():
print "n is an even numbern"
def prime():
print "n is a prime numbern"
# map the inputs to the function blocks
options = {0 : zero,
1 : sqr,
4 : sqr,
9 : sqr,
2 : even,
3 : prime,
5 : prime,
7 : prime,
}
Then the equivalent switch block is invoked:
options[num]()
This begins to fall apart if you heavily depend on fall through.
Answer #2:
The direct replacement is if
/elif
/else
.
However, in many cases there are better ways to do it in Python. See “Replacements for switch statement in Python?“.