Switch in Karel

Switch Statements in Python

Switch statements express conditionals across many branches.

Here’s a basic switch example translated into Python.

def main():
    i = 2
    print("Write", i, "as", end=" ")

    match i:
        case 1:
            print("one")
        case 2:
            print("two")
        case 3:
            print("three")

if __name__ == "__main__":
    main()

You can use vertical bars to separate multiple expressions in the same case statement. We use the optional default case in this example as well.

from datetime import datetime

def main():
    day_of_week = datetime.now().strftime('%A')

    match day_of_week:
        case "Saturday" | "Sunday":
            print("It's the weekend")
        case _:
            print("It's a weekday")

if __name__ == "__main__":
    main()

match without an expression is an alternate way to express if/else logic. Here we also show how the case expressions can be non-constants.

from datetime import datetime

def main():
    now = datetime.now().hour

    match now:
        case h if h < 12:
            print("It's before noon")
        case _:
            print("It's after noon")

if __name__ == "__main__":
    main()

A type match compares types instead of values. You can use this to discover the type of a variable. In this example, the variable t will have the type corresponding to its clause.

def what_am_i(i):
    match i:
        case bool(_):
            print("I'm a bool")
        case int(_):
            print("I'm an int")
        case _:
            print(f"Don't know type {type(i).__name__}")

def main():
    what_am_i(True)
    what_am_i(1)
    what_am_i("hey")

if __name__ == "__main__":
    main()
$ python switch_example.py 
Write 2 as two
It's a weekday
It's after noon
I'm a bool
I'm an int
Don't know type str