Python Forum
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Switch case or match case?
#8
(Jan-20-2022, 06:28 AM)snippsat Wrote: Here one more as training,so it's a switch/case on steroids🧨
Python, match/case(structured pattern matching) is actually much more than a simple switch/case.

So a couple of thing can nest case together with | and case _: work as else:
I would say that code has a clean look,and quite readable even if not seen structured pattern matching before.
from operator import add, sub, mul, truediv

def calculate():
    us_in = input("Select operation +, -, *, /: ")
    n1 = int(input("Fist number: "))
    n2 = int(input("Second number: "))
    op = {
        "+": add(n1, n2),
        "-": sub(n1, n2),
        "*": mul(n1, n2),
        "/": truediv(n1, n2),
    }
    match us_in:
        case ("+"|"-"|"*"|"/") as calc:
            print(f'{n1} {us_in} {n2} = {op[calc]}\n')

def menu():
    while True:
        print("(1) Calculate two numbers")
        print("(Q) Quit")
        choice = input("Enter your choice: ").lower()
        match choice:
            case '1':
                calculate()
            case 'q':
                return
            case _:
                print(f"Not a correct choice <{choice}>,try again\n")

if __name__ == "__main__":
    menu()

Test that his work.
Output:
(1) Calculate two numbers (Q) Quit Enter your choice: 1 Select operation +, -, *, /: / Fist number: 9 Second number: 4 9 / 4 = 2.25 (1) Calculate two numbers (Q) Quit Enter your choice: car Not a correct choice <car>,try again (1) Calculate two numbers (Q) Quit Enter your choice: 1 Select operation +, -, *, /: * Fist number: 99 Second number: 5 99 * 5 = 495 (1) Calculate two numbers (Q) Quit Enter your choice: Q


I cant make it work, :

Error:
File "<string>", line 15 match us_in: ^ SyntaxError: invalid syntax >
Cant say what is wrong still trying to understand how it works. Wink
Reply


Messages In This Thread
Switch case or match case? - by Frankduc - Jan-19-2022, 06:14 PM
RE: Switch case or match case? - by deanhystad - Jan-19-2022, 07:00 PM
RE: Switch case or match case? - by Frankduc - Jan-19-2022, 07:05 PM
RE: Switch case or match case? - by menator01 - Jan-19-2022, 07:50 PM
RE: Switch case or match case? - by Frankduc - Jan-19-2022, 08:09 PM
RE: Switch case or match case? - by deanhystad - Jan-19-2022, 07:37 PM
RE: Switch case or match case? - by snippsat - Jan-20-2022, 06:28 AM
RE: Switch case or match case? - by Frankduc - Jan-20-2022, 01:22 PM
RE: Switch case or match case? - by snippsat - Jan-20-2022, 01:32 PM
RE: Switch case or match case? - by Frankduc - Jan-20-2022, 01:56 PM

Possibly Related Threads…
Thread Author Replies Views Last Post
  Good way to ignore case when searching elements? Winfried 1 335 Apr-25-2024, 12:39 PM
Last Post: menator01
  switch case not working Username0089098 1 745 Apr-09-2023, 05:49 AM
Last Post: buran
  unittest generates multiple files for each of my test case, how do I change to 1 file zsousa 0 1,022 Feb-15-2023, 05:34 PM
Last Post: zsousa
  What colon (:) in Python mean in this case? Yapwc 4 2,322 Dec-28-2022, 04:04 PM
Last Post: snippsat
  Merging two Data Frame on a special case piku9290dgp 0 1,125 Mar-02-2022, 10:43 AM
Last Post: piku9290dgp
  best way to use switch case? korenron 8 3,131 Aug-18-2021, 03:16 PM
Last Post: naughtyCat
  Logstash - sending Logstash messages to another host in case of Failover in python Suriya 0 1,724 Jul-27-2021, 02:02 PM
Last Post: Suriya
  Help: write 'case' with Python ICanIBB 2 1,934 Jan-27-2021, 09:39 PM
Last Post: Larz60+
  Case sensitive checks kam_uk 2 2,090 Nov-30-2020, 01:25 AM
Last Post: bowlofred
  case transparent names in configpaser Skaperen 4 2,707 Oct-02-2020, 01:16 AM
Last Post: Skaperen

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020