Como Fazer um Switch com Python

1. Como Fazer um Switch com Python

Kaique Rangel de Almeida Lima
Kaique_rangel

(usa Linux Mint)

Enviado em 17/10/2016 - 22:15h

Como Fazer um Switch com Python? O Python não possui uma instrução switch/case existe alguma forma de sumulá-la?


  


2. Re: Como Fazer um Switch com Python

M.
XProtoman

(usa Fedora)

Enviado em 17/10/2016 - 23:29h

Até onde sei da para fazer algo similar assim:

#!/usr/bin/env python3

class Cor:
vermelho = 1;
verde = 2;
azul = 3;
branco = 4;
preto = 5;

# Mude a cor para testar
cor_atual = 2;

if cor_atual == Cor.vermelho:
print("Vermelho");
elif cor_atual == Cor.verde:
print("Verde");
elif cor_atual == Cor.azul:
print("Azul");
elif cor_atual == Cor.branco:
print("Branco");
elif cor_atual == Cor.preto:
print("Preto");
else:
print("Desconhecido");


Fiz esse exemplo rápido.

____________________
“Mas nós sabemos que a razão de a maioria estar aqui, é a nossa afinidade com a desobediência!” (Morpheus)


3. Re: Como Fazer um Switch com Python

Jeffersson Abreu
ctw6av

(usa Nenhuma)

Enviado em 17/10/2016 - 23:29h

Em python o switch pode ser o "if elif else" de sempre, veja um exemplo bem simples:

#!/usr/bin/env python3

vogal = input("Digite uma vogal: ")

if vogal == 'a':
print('você digitou a vogal "a"')

elif vogal == 'e':
print('você digitou a vogal "e"')

elif vogal == 'i':
print('você digitou a vogal "i"')

elif vogal == 'o':
print('você digitou a vogal "o"')

elif vogal == 'u':
print('você digitou a vogal "u"')

else:
print('Por favor recomeçe e digite uma vogal')







______________________________________________________________________
OS: Kali Linux kali-rolling kali-rolling
Kernel: x86_64 Linux 4.6.0-kali1-amd64
Resolution: 2390x768
CPU: Intel Core i3-4005U CPU @ 1.7GHz
RAM: 3852MiB


4. Re: Como Fazer um Switch com Python

Kaique Rangel de Almeida Lima
Kaique_rangel

(usa Linux Mint)

Enviado em 18/10/2016 - 00:13h

Eu preciso Fazer Esses códigos em python usando o Switch

#!/bin/bash
echo "Opções"
echo
echo "Digite 1 para, exibir status."
echo "Digite 2 para, exibir relação."
echo "Digite 3 para, exibir data."
echo "Digite 4 para sair."
echo
echo "Qual opção?"
read opcao
case $opcao in
1) df -h;;
2) who;;
3) date;;
4) exit;;
*) echo "Opção inexistente";;
esac




#!/bin/bash
status=$(ping -q -c 1 $1 | grep "received" | cut -d " " -f 4)
if [ $status -eq 0 ]
then
echo "servidor DOWN"
else
echo "servidor UP"
fi



5. Re: Como Fazer um Switch com Python

Gabriel
gabirugros

(usa Linux Mint)

Enviado em 18/10/2016 - 03:23h

from datetime import date as date
import getpass
getpass.getuser()
print "========================Opções====================\nDigite 1 para, exibir status.\nDigite 2 para, exibir relação.\nDigite 3 para, exibir data.\nDigite 4 para sair."

while True:
c=input(str("Qual opção:"))
if c==1:
print status
if c==2:
print getpass.getuser()
if c==3:
print date.today()
if c==4:
quit()
else:
print "opção inexistente"





espero que ajude,embora eu não saiba fazer a opção1, você pode usar varios "print" ao inves de "\n" mas é menos eficiente embora fique mais "limpo" =)


6. Re: Como Fazer um Switch com Python

Savio Nascimento
saviounix

(usa Debian)

Enviado em 19/10/2016 - 12:42h

Kaique_rangel escreveu:

Eu preciso Fazer Esses códigos em python usando o Switch

#!/bin/bash
echo "Opções"
echo
echo "Digite 1 para, exibir status."
echo "Digite 2 para, exibir relação."
echo "Digite 3 para, exibir data."
echo "Digite 4 para sair."
echo
echo "Qual opção?"
read opcao
case $opcao in
1) df -h;;
2) who;;
3) date;;
4) exit;;
*) echo "Opção inexistente";;
esac




#!/bin/bash
status=$(ping -q -c 1 $1 | grep "received" | cut -d " " -f 4)
if [ $status -eq 0 ]
then
echo "servidor DOWN"
else
echo "servidor UP"
fi


Boa tarde KAIQUE_RANGEL,

Baseado no seu exemplo, usando bash, procurei fazer o mais simples e direto possível a fim de solucionar seu problema.
Em Python não há Switch/Case, porém, como os próprios colegas acima disseram, pode ser simulado tal funcionalidade usando IF/ELIF/ELSE.

Pelo que vi, a sua opção 2 deverá listar os usuários logados, por isso usou um comando bash 'who'.

Para facilitar a compreensão, e também o desenvolvimento do script, importei a biblioteca 'os' nativa do python para realizar os comandos 'bash'. Assim, os resultados que tinha nos scripts anteriores serão iguais ou similares aos obtidos neste programa python.

Código
#!/bin/env python
# -*- coding: iso-8859-1 -*-
from datetime import date
import os

os.system("clear")

print ("""
\t\t###################################
\t\t### 1 ## Exibir status. ###
\t\t### 2 ## Exibir relação. ###
\t\t### 3 ## Exibir data. ###
\t\t### 4 ## Sair. ###
\t\t###################################
""")

while True:
try:
op = int(input("\nOpção: "))
except:
print ("\nOpção inválida! Digite apenas valores numéricos.\n")
quit()

if op==1:
ignoreTHIS = os.system("df -h")
elif op==2:
ignoreTHIS = os.system("who")
elif op==3:
print date.today()
#ignoreTHIS = os.system("date +%d/%m/%Y")
elif op==4:
print ("\nPrograma Encerrado.\n\n")
quit()
else:
print "Opção incorreta."



Espero ter ajudado em alguma dúvida ou até mesmo na resolução de todo o problema.

Qualquer dúvida quanto ao entendimento do código, estou a disposição para explicar.

Att[]
Savio.


7. Re: Como Fazer um Switch com Python

Lisandro Guerra
Lisandro

(usa Arch Linux)

Enviado em 31/10/2016 - 19:34h

Nossa galera vocês estão demais.
Ninguém pensou em usar dicionários na resposta?
Fala aí Kaique_rangel. Isto é exercício de curso ou de cadeira da faculdade?
Lembrem-se que muitos professores estão aqui no VOL e nem sempre com os seus nomes verdadeiros, então é boa prática avisar que se trata de um pedido de ajuda e sempre colocar um início de código para ser ajudado, assim não pega mal. ;-D
Abraço


8. Re: Como Fazer um Switch com Python

Jeffersson Abreu
ctw6av

(usa Nenhuma)

Enviado em 31/10/2016 - 21:11h

#!/usr/bin/env python3

vogais = list('aeiou')
vogal = input("Digite uma vogal: ")

if vogal in vogais:
print('você digitou a vogal {}'.format(vogal))


Sim, mas não responderia a pergunta "claramente" se ele não souber usar listas então é melhor o modo mais "bruto".


______________________________________________________________________
OS: Kali Linux kali-rolling kali-rolling
Kernel: x86_64 Linux 4.6.0-kali1-amd64
Resolution: 2390x768
CPU: Intel Core i3-4005U CPU @ 1.7GHz
RAM: 3852MiB


9. Re: Como Fazer um Switch com Python

Kaique Rangel de Almeida Lima
Kaique_rangel

(usa Linux Mint)

Enviado em 31/10/2016 - 21:24h

Lisandro escreveu:

Nossa galera vocês estão demais.
Ninguém pensou em usar dicionários na resposta?
Fala aí Kaique_rangel. Isto é exercício de curso ou de cadeira da faculdade?
Lembrem-se que muitos professores estão aqui no VOL e nem sempre com os seus nomes verdadeiros, então é boa prática avisar que se trata de um pedido de ajuda e sempre colocar um início de código para ser ajudado, assim não pega mal. ;-D
Abraço



Olá, não entendi a parte do dicionário...


10. Re: Como Fazer um Switch com Python

Perfil removido
removido

(usa Nenhuma)

Enviado em 31/10/2016 - 21:26h

gabirugros escreveu:

from datetime import date as date
import getpass
getpass.getuser()
print "========================Opções====================\nDigite 1 para, exibir status.\nDigite 2 para, exibir relação.\nDigite 3 para, exibir data.\nDigite 4 para sair."

while True:
c=input(str("Qual opção:"))
if c==1:
print status
if c==2:
print getpass.getuser()
if c==3:
print date.today()
if c==4:
quit()
else:
print "opção inexistente"





espero que ajude,embora eu não saiba fazer a opção1, você pode usar varios "print" ao inves de "\n" mas é menos eficiente embora fique mais "limpo" =)


Este código possui um problema: cada vez que um teste for validado como 1 a 3 o código será executado MAIS o else da quarta avaliação, porque se não é 4, é porque é 1, 2 ou 3.

O correto é colocar elif no lugar dos "if".

Parece-me que até Perl 5 não havia estrutura case sendo feito tudo à base de elsif. No Perl 6 criaram a possibilidade de uma estrutura de código tipo switch/case.

----------------------------------------------------------------------------------------------------------------
Nem direita, nem esquerda. Quando se trata de corrupção o Brasil é ambidestro.
(anônimo)

Encryption works. Properly implemented strong crypto systems are one of the few things that you can rely on. Unfortunately, endpoint security is so terrifically weak that NSA can frequently find ways around it. — Edward Snowden



11. Re: Como Fazer um Switch com Python

Kaique Rangel de Almeida Lima
Kaique_rangel

(usa Linux Mint)

Enviado em 31/10/2016 - 21:37h

gabirugros escreveu:

from datetime import date as date
import getpass
getpass.getuser()
print "========================Opções====================\nDigite 1 para, exibir status.\nDigite 2 para, exibir relação.\nDigite 3 para, exibir data.\nDigite 4 para sair."

while True:
c=input(str("Qual opção:"))
if c==1:
print status
if c==2:
print getpass.getuser()
if c==3:
print date.today()
if c==4:
quit()
else:
print "opção inexistente"





espero que ajude,embora eu não saiba fazer a opção1, você pode usar varios "print" ao inves de "\n" mas é menos eficiente embora fique mais "limpo" =)




Testei aqui, ele apresentou um erro na linha 4


12. Re: Como Fazer um Switch com Python

Lisandro Guerra
Lisandro

(usa Arch Linux)

Enviado em 31/10/2016 - 21:53h

Kaique_rangel escreveu:

Lisandro escreveu:

Nossa galera vocês estão demais.
Ninguém pensou em usar dicionários na resposta?
Fala aí Kaique_rangel. Isto é exercício de curso ou de cadeira da faculdade?
Lembrem-se que muitos professores estão aqui no VOL e nem sempre com os seus nomes verdadeiros, então é boa prática avisar que se trata de um pedido de ajuda e sempre colocar um início de código para ser ajudado, assim não pega mal. ;-D
Abraço



Olá, não entendi a parte do dicionário...


Ai vai um exemplo com dicionário e lista, sendo que a parte da lista é dispensável, só utilizei para ordenar os itens. Detalhe é que roubei neste programa (assim como alguns acima) pois o python não está fazendo nada mais que chamar os comandos do bash, mas acho que ficou razoavelmente pythônico:

import subprocess as sp

opcoes = {'1': ('para, exibir status.', 'df -h'),
'2': ('para, exibir relação.', 'who'),
'3': ('para, exibir data.', 'date'),
'4': ('para sair.', 'Até mais!')}

lista = ['Digite {0} {1}'.format(k, v[0]) for k, v in opcoes.items()]
lista.sort()

print ('Opções')
for e in lista:
print(e)

while True:
op = input("Qual opção? ")
if op == '4':
print(opcoes[op][1])
break
if op in opcoes:
op = opcoes[op][1]
resp = sp.getstatusoutput(op)
print(resp[1])





01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts