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?

  1. Ele testa o if: "A opção é igual a 1?" (Falso). O Python pula o bloco do if.
  2. Ele testa o primeiro elif: "A opção é igual a 2?" (Verdadeiro).
  3. O Python executa o print correspondente: "Você escolheu segunda via de boleto.".
  4. 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 elif e o else).

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.

  1. 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")
  1. 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!")
  1. 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ários elif no meio, e termina (opcionalmente) com um else no final.
  • O else no final não é obrigatório caso você não precise de um caso padrão.
  • O elif exige uma condição na sua declaração e termina com dois pontos (:).
  • O bloco de código subordinado ao elif deve estar devidamente indentado.