[Explained] Како имплементирати Свитцх-Цасе у Питхон-у

Желите да имплементирате конструкцију свитцх-цасе у Питхон-у? Научите различите приступе које можете да предузмете да бисте опонашали понашање прекидача.

Ако сте програмирали у Ц или ЈаваСцрипт-у, користићете наредбу свитцх-цасе. Али зашто нам је потребна конструкција прекидача?

Претпоставимо да имате скуп различитих акција (или блокова кода). А коју радњу изводите (блок кода за извршење) зависи од вредности променљиве или израза.

Неки примери укључују:

  • Додељивање оцена ученицима на основу њихових резултата
  • Избор техника манипулације стринговима на основу избора корисника
  • Извођење аритметичких операција над два броја у зависности од уноса корисника

Дакле, конструкција свитцх-цасе пружа згодан начин за имплементацију такве логике. Када треба да извршите — на основу вредности променљиве или израза — једну од многих могућих радњи.

Иако Питхон нема уграђену конструкцију свитцх-цасе, постоји неколико приступа које можете користити да бисте постигли сличну функционалност. У овом чланку ћемо истражити ове приступе.

Емулација понашања прекидача у Питхон-у

Хајде да видимо како можемо да емулирамо понашање преклопних великих и малих слова у Питхон-у узимајући пример.

Написаћемо једноставан програм који ради следеће:

  • Узорак речи, Питхон стринга, насумично са листе речи.
  • Обезбедите контекст и затражите од корисника. Дефинишите операције са стринговима—манипулација стринговима—које ће се извршити на изабраној речи.
  • Узмите у обзир операције за промену великих и малих слова (мала, велика, насловна и још много тога), укључујући подразумевано понашање. Користите уграђене Питхон методе стрингова по потреби.
  • Затражите од корисника унос. Пошто је улаз, подразумевано, стринг, конвертујте га у инт помоћу превођења типа.

Питхон стрингови су непроменљиви. Дакле, методе стрингова не модификују оригинални стринг. Уместо тога, враћају копију стринга са потребним изменама. Хајде да прегледамо Питхон методе стрингова које ћемо користити:

Стринг МетходДесцриптионловер()Враћа копију стринга где су сви знакови у малим словимауппер()Враћа копију стринга где су сви знакови у великим словиматитле()Враћа копију стринга форматиран у наслову цасевапцасе()Враћа копију стринг у коме се мала и велика слова конвертују у велика и мала слова, респективно

  Како омогућити или онемогућити Нудге у ​​Гмаил-у

Следећи исечак кода насумично узоркује реч из ворд_лист и преузима кориснички унос:

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: "))

Ево примера који показује како се стринг „Питхон“ мења на основу избора корисника:

Када сада покренете програм, требало би да будете упитани за унос овако:

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: 

Даље, хајде да наставимо са применом различитих приступа.

Коришћење мердевина Иф-Елиф-Елсе

У овом приступу користимо серију иф-елиф-елсе исказа да проверимо избор корисника у односу на унапред дефинисане опције. Затим извршавамо одговарајући блок кода на основу уноса корисника.

# 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}")

овде:

  • Упоређујемо унос корисника са сваком опцијом користећи иф-елиф изјаве.
  • Када се пронађе подударање, извршавамо одговарајући блок кода.
  • Ако се ниједан од услова иф-елиф не поклапа, извршавамо елсе блок за подразумевано понашање.

Можете покренути скрипту сада, унети избор и проверити излаз:

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.

мердевине иф-елиф-елсе је лако имплементирати. Али може бити изазов за одржавање. У овом примеру, имали смо пет случајева (укључујући подразумевано понашање). У пракси, међутим, можемо имати много више случајева. Тако дугачке иф-елиф-елсе мердевине су мирис кода који треба да избегавате.

  Како добити ЕПИКС сада бесплатну пробну верзију

Дакле, пређимо на имплементацију која се може одржавати.

Коришћење мапирања речника и првокласних функција

Можете да искористите Питхон речнике и функције да бисте опонашали понашање преклопних великих и малих слова.

📑 Питхон функције су грађани прве класе

У Питхон-у, функције су грађани првог реда. Можете учинити много више од самог дефинисања и позивања функција:

  • Када дефинишете функцију, можете је доделити другој променљивој, користити функције као елементе листа, вредности у речнику и још много тога.
  • Можете их и прослеђивати: функције се могу прослеђивати као аргументи другим функцијама, а функције могу вратити функције.

У овом приступу, користићемо речник да пресликамо изборе корисника на одговарајуће функције или радње. Ово је ефикаснији начин за руковање вишеструким изборима, јер избегава дуг ланац иф-елиф изјава.

Прво, хајде да дефинишемо следеће функције за различите стринг операције:

# 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()

Затим, урадимо следеће:

  • Направите речник који се зове избори где су кључеви избор корисника, а вредности функције или радње које треба извршити.
  • Користите методу речника гет() да бисте преузели изабрану радњу на основу избора корисника. Ако избор није пронађен у речнику, пружамо подразумевану акцију специфицирану ламбда функцијом.
  • Затим извршите изабрану радњу на случајној речи.
# 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}")

Ево примера излаза:

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.

Коришћење Матцх-Цасе

📝 Напомена: Потребан вам је Питхон 3.10 или новија верзија да бисте користили исказе подударања.

  Најбоља решења за управљање привилегованим приступом (ПАМ) у 2022

Почевши од Питхон-а 3.10, можете користити наредбу матцх за имплементацију конструкције налик свитцх-цасе-у. Изјава подударања са својом једноставном синтаксом пружа интуитивнији начин за руковање више случајева. _ (доња црта) служи као подразумевана велика и мала слова.

Ево како можемо поново да напишемо наш пример користећи подударање великих и малих слова:

  • Користимо исказ подударања да бисмо упоредили унос корисника са различитим случајевима.
  • Сваки случај наводи избор и код за извршење ако се тај избор подудара.
  • _ (доња црта) служи као подразумевани случај, извршавајући код када се ниједан други случај не подудара.
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}.")

Сада можете покренути скрипту и проверити излаз:

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.

⚙ Иако изјава о подударању пружа згодан начин за имплементацију конструкције свитцх-цасе, она је намењена кориснијим подударање структурног узорка задатке изван емулације понашања прекидача.

Окончање

Хајде да сумирамо различите приступе за постизање функционалности прекидача у Питхон-у:

  • мердевине иф-елиф-елсе је лако применити, али је тешко одржавати. Зато их користите минимално — само када немате превише опција за проверу.
  • Можете да искористите Питхон речнике и функције да бисте опонашали понашање преклопних великих и малих слова. Укључите различите изборе и одговарајуће функције као кључеве и вредности речника, респективно.
  • Наредба матцх-цасе, уведена у Питхон 3.10, помаже у имплементацији ове конструкције свитцх-цасе са једноставном и интуитивном синтаксом. Међутим, изјава матцх-цасе је одличан избор за интересантније случајеве употребе структуралног подударања.

Примере кода за овај водич можете пронаћи на ГитХуб. Ако се припремате за интервјуе за кодирање, погледајте ову компилацију најбољих питања за Питхон интервју.