Introdução à instrução Python Switch

Uma instrução switch é um recurso de programação muito útil e poderoso. É uma instrução ladder alternativa if-else-if e fornece melhor desempenho e código mais gerenciável do que uma instrução ladder if-else-if. A maioria das linguagens de programação (como Java, C, etc.) oferece instruções de opção, mas a linguagem Python não possui nenhuma instrução de opção. No entanto, se você gosta de instruções de caso de troca, existe uma maneira muito eficiente de implementar um recurso de declaração de caso de troca no Python. Este tutorial irá ajudá-lo a implementá-lo.

Fluxograma

A instrução switch em todas as linguagens de programação tem a mesma funcionalidade, mas sintaxe um pouco diferente. A linguagem Python não fornece nenhuma instrução de chave embutida. Podemos implementar esse recurso com o mesmo fluxo e funcionalidade, mas com sintaxe e implementação diferentes usando o Dicionário Python.

Sintaxe da instrução Switch

Basta olhar para as duas sintaxes diferentes da instrução switch abaixo. A primeira instrução mostra a sintaxe padrão das instruções switch em outras linguagens de programação como C, Java etc. A segunda instrução é a implementação em Python da instrução Switch. Você pode relacionar claramente como ambos são semelhantes em funcionalidade, mas diferentes em implementação.

1. Alterne em outros idiomas (c, Java, ..)

Sintaxe:

switch(N)
(
case 1: Statement if N = 1;
break;
case 2: Statement if N = 2;
break;
::
case n: Statement if N = n;
break;
default: Statement if N doesn't match any
)

2. Alterne a implementação em Python

Sintaxe:

switcher=
(
key_1: value_1/method_1(),
key_2: value_2/method_2(),
key_3: value_3/method_3(),
::
key_n: value_n/method_n(),
)
key = N
value = switcher.get(key, "default")

Trabalho da instrução Switch

  • O trabalho da instrução switch padrão em qualquer linguagem de programação é semelhante. Consiste em vários casos, cada um com uma instrução de bloco e quebra de código.
  • O argumento de entrada é comparado com vários casos, um após o outro. Se o argumento corresponder a algum dos casos, a instrução de bloco correspondente será executada e o controle sairá da instrução switch na instrução break.
  • Se nenhum dos casos corresponder ao argumento de entrada, a instrução de bloco padrão será executada.
  • Na implementação Python das instruções switch, consideramos o dicionário Python como a opção e as chaves do dicionário como casos. Aqui chamamos a função get () do dicionário com argumentos necessários, ou seja, chave de entrada e um valor padrão.
  • Se a tecla de entrada corresponder a qualquer uma das teclas do dicionário, o valor correspondente será retornado. No entanto, se a chave de entrada não corresponder a nenhuma das chaves do dicionário, o valor padrão será retornado.

Implementação da instrução Switch em Python

Como sabemos, as instruções switch case e if-else-if ladder são alternadas entre si. Ambos podem ser usados ​​para atingir o mesmo objetivo, mas uma declaração de caso de switch fornece melhor desempenho e código mais gerenciável do que uma declaração ladder if-else-if. A linguagem Python não possui nenhuma instrução switch, mas podemos implementar uma funcionalidade semelhante usando o Python Dictionary.

Na seção a seguir, veremos a implementação de cada uma com exemplo.

Exemplo 1

Uso da escada if-else-if - Uma alternativa para alternar a instrução de caso. Neste exemplo, usamos a instrução ladder if-else-if para obter o dia da semana. Para o mesmo caso de uso, também veremos a implementação do estado do switch no Python.

Código:

def get_week_day(argument):
if(argument == 0):
day="Sunday"
elif(argument == 1):
day="Monday"
elif(argument == 2):
day="Tuesday"
elif(argument == 3):
day="Wednesday"
elif(argument == 4):
day="Thursday"
elif(argument == 5):
day="Friday"
elif(argument == 6):
day="Saturday"
else:
day="Invalid day"
return day
# Driver program
if __name__ == "__main__":
print (get_week_day(6))
print (get_week_day(8))
print (get_week_day(0))

Resultado:

Exemplo 2

Implementação da instrução switch usando o Dictionary of Strings. A linguagem Python não possui nenhuma instrução switch. No entanto, podemos implementar eficientemente um recurso de instrução switch no Python usando o Dictionary, como abaixo.

Explicação: Dicionário em Python é uma coleção não ordenada de pares de chave e valor. No trecho de código abaixo, o comutador é uma variável de dicionário que está mantendo a tecla: pares de valores semelhantes aos casos do tipo comutador.

Usando o método get (), podemos acessar o item do dicionário passando os argumentos como a chave e o valor padrão opcional. O valor padrão ajuda a implementar o 'caso padrão' de uma instrução switch.

Código:

def get_week_day(argument):
switcher = (
0: "Sunday",
1: "Monday",
2: "Tuesday",
3: "Wednesday",
4: "Thursday",
5: "Friday",
6: "Saturday"
)
return switcher.get(argument, "Invalid day")
# Driver program
if __name__ == "__main__":
print (get_week_day(6))
print (get_week_day(8))
print (get_week_day(0))

Resultado:

Neste exemplo, passemos 6 como argumento de entrada ou chave de entrada que será pesquisada nas teclas do dicionário (comutador). Como a chave = 6 é encontrada, ele retornará o valor como sábado. Agora passe 8 como tecla de entrada que será pesquisada nas teclas do dicionário (comutador). Como a chave = 8 não foi encontrada, ele retornará o valor padrão como dia inválido.

Exemplo 3

Implementação da instrução switch usando o mapeamento de funções do Dictionary. No exemplo acima, os valores do dicionário são do tipo de dados string, ou seja, constantes. Mas é interessante saber que os valores de um dicionário Python podem ser de qualquer tipo de dados.

Os valores de um dicionário Python podem ser constantes (números inteiros, strings) e também funções. Neste exemplo, implementaremos a instrução switch que também suportará a chamada de função para cada caso de switch usando o dicionário de funções como abaixo.

Código:

def get_week_day(argument):
def zero():
return "Sunday"
def one():
return "Monday"
def two():
return "Tuesday"
def three():
return "Wednesday"
def four():
return "Thursday"
def five():
return "Friday"
def six():
return "Saturday"
switcher = (
0: zero(),
1: one(),
2: two(),
3: three(),
4: four(),
5: five(),
6: six()
)
return switcher.get(argument, "Invalid day")
# Driver program
if __name__ == "__main__":
print (get_week_day(6))
print (get_week_day(8))
print (get_week_day(0))

resultado:

Conclusão

Como vimos acima, o mesmo caso de uso pode ser implementado pela instrução switch case e pela instrução ladder if-else-if. Mas a declaração do Switch fornece um código mais gerenciável e legível do que a declaração ladder if-else-if. Também vimos que a linguagem Python não possui nenhuma instrução switch, mas podemos implementar a mesma de uma maneira mais eficiente usando o Dicionário Python.

Artigos recomendados

Este é um guia para a instrução Python Switch. Aqui discutimos a sintaxe, o fluxograma e o trabalho da instrução switch python, juntamente com exemplos e implementação. Você também pode consultar os seguintes artigos para saber mais:

  1. Herança em Python
  2. Sobrecarga de Python
  3. Dicionário em Python
  4. Dicionário em Python