logo

Python Match atvejo pareiškimas

Kūrėjai iš tokių kalbų kaip C/C++ arba Java žino, kad yra sąlyginis teiginys, žinomas kaip a Perjungti dėklą . Tai Degtuko dėklas yra Python Switch Case, kuris buvo pristatytas Python 3.10. Čia pirmiausia turime perduoti parametrą, o tada bandyti patikrinti, kuriuo atveju parametras yra patenkinamas. Jei rasime atitikmenį, vykdysime tam tikrą kodą, o jei atitikimo iš viso nebus, bus atliktas numatytasis veiksmas.

Python Match Case Statement sintaksė

Atitikties atvejo sakinys Python yra inicijuojamas su rungtynės raktinis žodis, po kurio nurodomas parametras, kurį reikia atitikti. Tada įvairūs atvejai apibrėžiami naudojant atveju raktinį žodį ir šabloną, kad atitiktų parametrą. The _ yra pakaitos simbolis, kuris paleidžiamas, kai visi atvejai neatitinka parametro reikšmės.



match parameter: case pattern1: # code for pattern 1 case pattern2: # code for pattern 2 . . case patterN: # code for pattern N case _: # default code block>

Turinys

kaip sujungti eilutes Java

Dabar pažiūrėkime kelis pavyzdžius, kad sužinotume, kaip „Python“ veikia atitikties raidžių sakinys.

Paprastos atitikties atvejo pareiškimas

Paprastame Python atitikties atvejo teiginyje tiksli reikšmė lyginama ir suderinama su didžiųjų raidžių šablono reikšme. Yra įvairių bandymų atvejų ir atitinkamų kodų, kurie bus vykdomi tik tada, kai atvejis bus suderintas. Kitu atveju yra numatytasis atvejis, kuris vykdomas, kai nesutampa visi apibrėžti atvejai.



Pavyzdys: Šiame pavyzdyje mes paprašysime vartotojo įvesti reikšmę nuo 1 iki 3 ir parodyti atitinkamą skaičių žodžiais, naudodami paprastą atitikties didžiųjų ir mažųjų raidžių teiginį.

Python
# simple match case statement def runMatch(): num = int(input('Enter a number between 1 and 3: ')) # match case match num: # pattern 1 case 1: print('One') # pattern 2 case 2: print('Two') # pattern 3 case 3: print('Three') # default pattern case _: print('Number not between 1 and 3') runMatch()>

Išvestis:

Enter a number between 1 and 3: 5 Number not between 1 and 3>

Suderinkite atvejo pareiškimą su ARBA operatoriumi

Degtuko atvejis Python teiginiai yra skirti tik šablonams ir konkrečiams raktiniams žodžiams ar parametrams atitikti. Tačiau „python“ taip pat galime naudoti „match case“ sakinį, kai yra daugiau nei vienas atvejis, dėl kurio gaunama ta pati išvestis. Tokiu atveju galime naudoti vamzdžių operatorių, taip pat žinomą kaip OR operatorius atitikmens atvejo pareiškime.



Pavyzdys: Šiame pavyzdyje mes paprašysime vartotojo įvesti reikšmę nuo 1 iki 6. Tada, naudodami atitikmenų raidę su operatoriumi OR, sujungėme poras po 1 atvejį, kuris parodys atitinkamą skaičių žodžiais.

Python
# python match case with OR operator def runMatch(): num = int(input('Enter a number between 1 and 6: ')) # match case match num: # pattern 1 case 1 | 2: print('One or Two') # pattern 2 case 3 | 4: print('Three or Four') # pattern 3 case 5 | 6: print('Five or Six') # default pattern case _: print('Number not between 1 and 6') runMatch()>

Išvestis:

Enter a number between 1 and 6: 4 Three or Four>

Suderinkite atvejo pareiškimą su Python If sąlyga

Taip pat galime naudoti Python If sąlyga kartu su atitikties raidžių teiginiu, kai vietoj tikslios reikšmės atitikimo naudojame sąlygą. Remiantis sąlyga, jei reikšmė yra True ir atitinka atvejo šabloną, vykdomas kodo blokas.

Pavyzdys: Šiame pavyzdyje mes naudosime sąlygą if kartu su atitikties didžiųjų raidžių sakiniu, kad patikrintume, ar skaičius įvestas į vartotojo ID teigiamą, neigiamą ar nulį.

Python
# python match case with if condition def runMatch(): num = int(input('Enter a number: ')) # match case match num: # pattern 1 case num if num>0: print('Teigiamas') # šablonas 2 case num if num< 0: print('Negative') # default pattern case _: print('Zero') runMatch()>

Išvestis:

Enter a number: -15 Negative>

Suderinkite atvejį su sekos šablonu

„Python“ atitikties didžiųjų raidžių teiginiai dažniausiai naudojami sekos modeliams, pvz., sąrašams ir eilutėms, suderinti. Tai gana paprasta ir gali naudoti pozicinius argumentus modeliams patikrinti.

Pavyzdys: Šiame pavyzdyje mes naudojame python eilutę, kad patikrintume, ar simbolis yra styga arba nenaudojant degtukų dėžutės. Mes pateikiame eilutę kartu su simbolio, kurį norime patikrinti, indeksu eilutėje, kad atitiktų didžiąją raidę. Tada apibrėžėme atitikties atvejus, koks tas veikėjas galėtų būti.

Python
# match case to check a character in a string def runMatch(): myStr = 'Hello World' # match case match (myStr[6]): case 'w': print('Case 1 matches') case 'W': print('Case 2 matches') case _: print('Character not in the string') runMatch()>

Išvestis:

Case 2 matches>

Pavyzdys: Šiame pavyzdyje mes naudojame a Python sąrašas modelio derinimui. Mes suderiname pirmąjį prarasto elemento elementą ir taip pat naudojame pozicinius argumentus, kad atitiktume likusį sąrašą.

Python
# python match case with list def runMatch(mystr): # match case match mystr: # pattern 1 case ['a']: print('a') # pattern 2 case ['a', *b]: print(f'a and {b}') # pattern 3 case [*a, 'e'] | (*a, 'e'): print(f'{a} and e') # default pattern case _: print('No data') runMatch([]) runMatch(['a']) runMatch(['a', 'b']) runMatch(['b', 'c', 'd', 'e'])>

Išvestis:

No data a a and ['b'] ['b', 'c', 'd'] and e>

Suderinkite atvejo pareiškimą su Python žodynu

„Python“ atitikties didžiųjų raidžių teiginiai gali tvarkyti žodynas taip pat. Jis gali atitikti vieną klavišą arba kelis klavišus. Raktai ir reikšmės turi būti žodyne. Jei yra kokia nors neteisinga reikšmė arba raktas, kurio nėra ir kuris neatitinka tikrojo žodyno ir reikšmės, tas atvejis bus atmestas.

eilutę ir stulpelį

Pavyzdys: Šiame pavyzdyje mes naudojame žodyną su atitikties didžiųjų ir mažųjų raidžių sakiniu python. Mes pateikiame žodynus su skirtingais duomenimis, atitinkančiais atitikmenų raides, ir jie atitiks žodyno raktus su skirtingais pateiktais atvejais.

Python
# match case with python dictionaryu def runMatch(dictionary): # match case match dictionary: # pattern 1 case {'name': n, 'age': a}: print(f'Name:{n}, Age:{a}') # pattern 2 case {'name': n, 'salary': s}: print(f'Name:{n}, Salary:{s}') # default pattern case _ : print('Data does not exist') runMatch({'name': 'Jay', 'age': 24}) runMatch({'name': 'Ed', 'salary': 25000}) runMatch({'name': 'Al', 'age': 27}) runMatch({})>

Išvestis:

Name:Jay, Age:24 Name:Ed, Salary:25000 Name:Al, Age:27 Data does not exist>

Suderinkite atvejo pareiškimą su Python klase

Taip pat galime naudoti Python klasės kad atitiktų atvejus naudojant Python atitikties didžiųjų raidžių sakinius. Dėl to kodas bus labai švarus, tvarkingas ir, svarbiausia, lengvai skaitomas. Jame naudojamas Python duomenų klasių modulis.

Pavyzdys: Šiame pavyzdyje sukūrėme dvi klases, pavadintas Asmuo ir Programuotojas. Pirma mintis pamačius atitikties teiginį būtų tokia, kad programuotojas ir asmuo atitikimo sakinyje sukurtų atitinkamų klasių egzempliorių, tačiau taip nėra. Jis patikrins egzempliorių su nurodytomis reikšmėmis. Taigi atvejis Programuotojas (Om, kalba = Python, framework = Django) nesukurs egzemplioriaus, bet patikrins, ar perduotas objektas, kurio pavadinimas yra egzempliorius, yra tikras Programuotojo klasės egzempliorius, tada patikrins pavadinimą, kuris yra Om. , kalba, kuri yra Python, o tada sistema, kuri yra Django. Tokiu būdu galime patikrinti reikšmes bet kurios klasės atveju.

Python
# match case with python classes # import dataclass module from dataclasses import dataclass #Class 1 @dataclass class Person: name: str age: int salary: int # class 2 @dataclass class Programmer: name: str language: str framework: str def runMatch(instance): # match case match instance: # pattern 1 case Programmer('Om', language='Python', framework='Django'): print(f'Name: Om, Language:Python, Framework:Django') # pattern 2 case Programmer('Rishabh', 'C++'): print('Name:Rishabh, Language:C++') # pattern 3 case Person('Vishal', age=5, salary=100): print('Name:Vishal') # pattern 4 case Programmer(name, language, framework): print(f'Name:{name}, Language:{language}, Framework:{framework}') # pattern 5 case Person(): print('He is just a person !') # default case case _: print('This person is nothiing!') programmer1 = Programmer('Om', 'Python', 'Django') programmer2 = Programmer('Rishabh', 'C++', None) programmer3 = Programmer('Sankalp', 'Javascript', 'React') person1 = Person('Vishal', 5, 100) runMatch(programmer1) runMatch(programmer2) runMatch(person1) runMatch(programmer3)>

Išvestis:

Name: Om, Language:Python, Framework:Django Name:Rishabh, Language:C++ Name:Vishal Name:Sankalp, Language:Javascript, Framework:React>

Python Match Case Statement DUK

Kl .: koks yra atitikties atvejo pareiškimas Python?

A: Atitikties raidžių teiginys, taip pat žinomas kaip modelio atitikimas, yra funkcija, įdiegta Python 3.10 versijoje. Tai suteikia glaustą ir išraiškingą būdą duomenų struktūrų, pvz., eilučių, sąrašų ir klasių, modelių suderinimui. Tai leidžia suderinti išraiškos vertę su šablonų serija ir vykdyti atitinkamą suderinto šablono kodo bloką.

Kl.: kuo skiriasi atitikties atvejo teiginys nuo if-elif-else teiginių?

A: „Mat-case“ teiginys yra galingesnis ir išraiškingesnis, palyginti su „if-elif-else“ teiginiais. Nors if-elif-else teiginiai remiasi loginėmis išraiškomis, teiginiai, atitinkantys didžiąsias ir mažąsias raides, gali atitikti šablonus, pagrįstus duomenų struktūra ir verte. Atvejų atitikimo teiginiai suteikia struktūriškesnį ir įskaitomesnį būdą tvarkyti kelias sąlygas ir atlikti skirtingus veiksmus pagal tas sąlygas.

Kl.: Kokie yra atitikties atvejo pareiškimo naudojimo pranašumai?

A: Ataskaita apie rungtynes ​​suteikia keletą privalumų, įskaitant:

  • Glaustumas: sutapimo raidžių teiginiai leidžia glaustai ir skaitomai išreikšti sudėtingą šakojimosi logiką.
  • Skaitomumas: modelio atitikimas daro kodą lengviau skaitomu ir aiškesnį, nes jis labai panašus į problemos sritį.
  • Sauga: Atvejų atitikimo teiginiai užtikrina išsamų modelio atitikimą, užtikrinant, kad būtų tvarkomi visi įmanomi atvejai.