Usando elif
Veja como testar várias possibilidades, como um cardápio com diferentes escolhas.
Na vida, nem tudo é apenas uma escolha entre duas opções (plano A ou plano B). Às vezes, temos várias alternativas possíveis.
Por exemplo, ao olhar para um semáforo de trânsito:
- Se a luz for verde: você passa.
- Senão, se a luz for amarela: você diminui a velocidade e presta atenção.
- Senão (se for vermelha): você para.
Na programação, quando precisamos testar mais de duas possibilidades, nós usamos a palavra-chave elif (que é a união das palavras inglesas else e if, significando senão, se).
O menu de escolhas
O elif nos permite criar uma "escada" de perguntas. O Python vai testando cada uma, de cima para baixo, até encontrar a primeira resposta verdadeira. Nós podemos usar quantos elif forem necessários.
Veja um exemplo prático de um menu de atendimento eletrônico:
opcao = 2
if opcao == 1:
print("Você escolheu Falar com atendente.")
elif opcao == 2:
print("Você escolheu segunda via de boleto.")
elif opcao == 3:
print("Você escolheu cancelar serviço.")
else:
print("Opção inválida. Digite um número de 1 a 3.")
Como o Python lê essa escada de decisões?
- Ele testa o
if: "A opção é igual a 1?" (Falso). O Python pula o bloco doif. - Ele testa o primeiro
elif: "A opção é igual a 2?" (Verdadeiro). - O Python executa o print correspondente:
"Você escolheu segunda via de boleto.". - Importante: Assim que o Python encontra uma condição verdadeira, ele executa o bloco dela e ignora completamente todo o resto da estrutura (os outros
elife oelse).
As regras do elif
Para usar o elif de forma perfeita, lembre-se destas regras:
1. Ele nunca anda sozinho
O elif só faz sentido se vier depois de um if. Você não pode começar uma estrutura condicional diretamente com elif.
2. Você pode usar quantos quiser
Diferente do if (que só existe um no início) e do else (que só existe um no final), você pode colocar quantos elif precisar no meio da sua estrutura para testar 3, 4, 10 ou quantas possibilidades quiser.
3. Exige uma condição e termina com dois pontos (:)
Como o elif faz uma nova pergunta, ele deve vir acompanhado de uma condição e terminar obrigatoriamente com dois pontos (:).
# Correto
elif temperatura > 30:
print("Está calor!")
# Incorreto - Causará SyntaxError por falta da pergunta
elif:
print("Erro!")
4. O bloco else no final é opcional
Você não é obrigado a colocar um else no final de uma escada de if/elif. Se você não precisar de uma ação padrão quando todas as condições forem falsas, você pode simplesmente terminar o seu código sem ele.
Para praticar
Veja a seguir exemplos aplicados para consolidar o uso do elif.
- Polígonos recebem nomes de acordo com o número de lados que apresentam:
- 3 lados - Triângulo
- 4 lados - Quadrilátero
- 5 lados - Pentágono
- 6 lados - Hexágono
- 7 lados - Heptágono
- 8 lados - Octógono
- 9 lados - Eneágono
- 10 lados - Decágono
Vamos escrever um programa que recebe o número de lados e retorna o nome do polígono correspondente. Caso o número de lados informado não esteja na lista acima, vamos mostrar uma mensagem dizendo: "Valor não suportado".
Aqui basta verificar se o número de lados é igual a x. Vamos usar o operador de igualdade ==.
lados = int(input("Informe o número de lados: "))
if lados == 3:
print("Triângulo")
elif lados == 4:
print("Quadrilátero")
elif lados == 5:
print("Pentágono")
elif lados == 6:
print("Hexágono")
elif lados == 7:
print("Heptágono")
elif lados == 8:
print("Octógono")
elif lados == 9:
print("Eneágono")
elif lados == 10:
print("Decágono")
else:
print("Valor não suportado")
- Os comprimentos de onda de luz visível pelo olho humano variam de 380 até 750 nanômetros (nm). Essa faixa de valores pode ser dividida em seis cores:
| Comprimento de onda (nm) | Cor |
|---|---|
| De 380 até 450 | Violeta |
| De 451 até 495 | Azul |
| De 496 até 570 | Verde |
| De 571 até 590 | Amarelo |
| De 591 até 620 | Laranja |
| De 621 até 750 | Vermelho |
Vamos usar uma estrutura com elif para montar um programa que recebe um comprimento de onda e exibe a cor correspondente. Caso o comprimento de onda informado esteja fora do intervalo (380 - 750), vamos informar uma mensagem de alerta.
Como cada cor corresponde a um intervalo de valores (ex.: violeta está entre 380 e 450), vamos precisar de operadores lógicos para montar as perguntas.
Para verificar que um comprimento de onda está entre 380 e 450, precisamos garantir que:
- comprimento_onda
>=380 - comprimento_onda
<=450
Para verificar se o comprimento_onda atende as duas condições, vamos usar o operador and:
- comprimento_onda >= 380 and comprimento_onda <= 450
Assim, nosso programa ficará:
comprimento_onda = int(input("Informe o comprimento de onda: "))
if comprimento_onda >= 380 and comprimento_onda <= 450:
print("Violeta")
elif comprimento_onda >= 451 and comprimento_onda <= 495:
print("Azul")
elif comprimento_onda >= 496 and comprimento_onda <= 570:
print("Verde")
elif comprimento_onda >= 571 and comprimento_onda <= 590:
print("Amarelo")
elif comprimento_onda >= 591 and comprimento_onda <= 620:
print("Laranja")
elif comprimento_onda >= 621 and comprimento_onda <= 750:
print("Vermelho")
else:
print("Informe um valor entre 380 e 750!")
- A magnitude de um sismo é medida através da Escala Richter:
| Magnitude | Descrição |
|---|---|
| menor que 2,0 | Microssismos |
| 2,0 até 2,9 | Muito pequeno |
| 3,0 até 3,9 | Pequeno |
| 4,0 até 4,9 | Ligeiro |
| 5,0 até 5,9 | Moderado |
| 6,0 até 6,9 | Forte |
| 7,0 até 7,9 | Grande |
| 8,0 até 8,9 | Importante |
| 9,0 até 9,9 | Excepcional |
| maior que 10,0 | Extremo |
magnitude = float(input("Informe a magnitude: "))
if magnitude < 2.0:
print("Microssismos")
# Se a resposta da primeira pergunta for False, automaticamente o Python entende que magnitude é maior ou igual a 2.0, então na próxima pergunta só precisamos testar se a magnitude é menor ou igual a 2.9:
elif magnitude <= 2.9:
print("Muito pequeno")
# Da mesma maneira, se a resposta da pergunta anterior for False, o Python entende que magnitude é maior ou igual a 2.9, então só precisamos testar se a magnitude é menor ou igual a 3.9 e assim por diante.
elif magnitude <= 3.9:
print("Pequeno")
elif magnitude <= 4.9:
print("Ligeiro")
elif magnitude <= 5.9:
print("Moderado")
elif magnitude <= 6.9:
print("Forte")
elif magnitude <= 7.9:
print("Grande")
elif magnitude <= 8.9:
print("Importante")
elif magnitude <= 9.9:
print("Excepcional")
else:
print("Extremo")
O que aprendemos nesta lição
Nesta lição, você aprendeu que:
- O
elif(senão, se) serve para testar condições adicionais quando temos três ou mais possibilidades. - O Python testa as condições de cima para baixo e executa apenas a primeira que for verdadeira.
- A estrutura condicional sempre começa com um único
if, pode ter várioselifno meio, e termina (opcionalmente) com umelseno final. - O
elseno final não é obrigatório caso você não precise de um caso padrão. - O
elifexige uma condição na sua declaração e termina com dois pontos (:). - O bloco de código subordinado ao
elifdeve estar devidamente indentado.