Módulo 7 - Condições com if, elif e else

Usando o else: o caminho alternativo

9 min de leitura · por Cesar Gargiulo, revisado pela equipe ValorFinal e GuardiaSec · Atualizado em 01/07/2026

O que você vai aprender

  • Escrever uma bifurcação if/else completa.
  • Garantir que exatamente um dos dois caminhos sempre executa.
  • Entender por que o else nunca leva condição.
  • Corrigir o erro clássico de escrever else com comparação.

A bifurcação completa: um caminho para cada resposta

Na aula passada, o programa da portaria tinha um comportamento estranho: quando a idade era menor que 18, ele ficava mudo. Decidiu certo, mas não avisou nada a quem ficou de fora. Programa educado responde nos dois casos, e é para isso que existe o else. Ele cria o segundo braço da bifurcação: um bloco que executa exatamente quando a condição do if é False.

idade = 15

if idade >= 18:
    print("Entrada liberada.")
else:
    print("Entrada não permitida para menores de 18.")

# Saída:
# Entrada não permitida para menores de 18.

A bifurcação completa. Com idade 15, a condição é False e o caminho do else responde.

Repare na geometria do código, porque ela carrega significado. O else fica na mesma coluna do if, colado na margem esquerda, mostrando que os dois formam uma única estrutura. Ele também termina em dois pontos e também comanda um bloco indentado de 4 espaços. Rode o exemplo com 15 e depois com 20: você vai ver uma mensagem de cada vez, nunca as duas juntas. Essa exclusividade é a assinatura do if/else.

if sozinho

  • Decide entre fazer e não fazer
  • Quando a condição é False, nada acontece
  • Bom para ações extras e opcionais
  • Exemplo: dar parabéns só para nota alta

if com else

  • Decide entre dois caminhos que se excluem
  • Sempre executa exatamente um dos blocos
  • Bom quando toda entrada merece resposta
  • Exemplo: liberar OU negar a entrada

O else não tem condição, e isso é proposital

Agora o erro que quase todo iniciante comete uma vez. A lógica da portaria parece pedir duas condições: SE idade >= 18, libere; SE idade < 18, negue. Daí a tentação de escrever a segunda no else. O Python recusa na hora, e por um bom motivo: o else significa em todos os outros casos. Ele já é, por definição, o oposto exato da condição do if. Escrever condição nele seria redundante e abriria espaço para contradições.

idade = 15

if idade >= 18:
    print("Entrada liberada.")
else idade < 18:  # SyntaxError: invalid syntax
    print("Entrada não permitida.")

# O else nunca leva condição: ele já significa
# "em todos os casos em que o if deu False".

O erro clássico. A condição depois do else quebra o programa antes mesmo de rodar.

Pense no else como a palavra senão do português. Você diz: se estiver chovendo, vou de carro; senão, vou a pé. Ninguém diz: senão não estiver chovendo, vou a pé. O senão já carrega o contrário embutido. A correção do código acima é só apagar a comparação e deixar else com os dois pontos, nada mais. Quando você realmente precisar testar uma segunda condição diferente, a ferramenta certa é o elif, assunto da próxima aula.

Lendo if/else em código de verdade

Para fechar, um exemplo com cara de programa real: o conferidor de senha. Ele compara o que o usuário digitou com a senha esperada e responde nos dois casos. Leia primeiro, preveja a saída e só depois rode no laboratório trocando o valor de digitada.

senha_correta = "abacaxi42"
digitada = "abacaxi41"

if digitada == senha_correta:
    print("Acesso liberado. Bem-vindo!")
else:
    print("Senha incorreta. Tente novamente.")

# Saída:
# Senha incorreta. Tente novamente.

Bifurcação com strings: a comparação com == funciona para textos do mesmo jeito que para números.

Dois detalhes valem registro. Primeiro, o == compara textos com o mesmo rigor que compara números: abacaxi41 e abacaxi42 diferem em um caractere e isso basta para o False. Segundo, o programa inteiro tem um único destino garantido: alguma mensagem sempre aparece. É essa previsibilidade que faz o if/else ser a estrutura preferida para validações. Na prática do fim do módulo, você vai usar exatamente esse padrão para responder sobre voto e CNH.

Teste rápido

Por que a linha "else idade < 18:" gera erro em Python?

Perguntas frequentes

O else é obrigatório em todo if?
Não. O if funciona sozinho quando a ausência de ação já é a resposta certa, como dar parabéns só para quem gabaritou. Use else quando os dois resultados merecem resposta, como liberar ou negar um acesso. A escolha é de design, não de sintaxe.
Pode existir else sem if?
Não. O else é a segunda metade de uma estrutura que começa no if; sozinho, ele gera SyntaxError. O Python precisa saber de qual condição aquele senão é o contrário, e essa informação vem do if imediatamente acima, na mesma coluna.
Um if pode ter dois else?
Não, no máximo um else por if, sempre no final da estrutura. Se a sua lógica parece pedir dois else, é sinal de que existem três ou mais caminhos, e aí a peça que falta é o elif, apresentado na próxima aula.
O bloco do else pode ter várias linhas?
Pode, como qualquer bloco: todas as linhas com a mesma indentação de 4 espaços pertencem a ele. O bloco termina na primeira linha que volta para a margem esquerda, exatamente como no if.
Existe diferença de desempenho entre usar if sozinho e if/else?
Nenhuma que importe. O Python avalia a condição uma vez e segue por um dos caminhos; ter ou não ter else não muda o custo de forma perceptível. A escolha entre as duas formas deve ser guiada pela clareza da lógica, nunca por micro-otimização.
Como escolho o que vai no if e o que vai no else?
Uma convenção útil: coloque no if o caso que dá nome à pergunta, de preferência o afirmativo. Para pode entrar?, teste idade >= 18 no if e deixe a negativa no else. Condições afirmativas se leem melhor, e o guia de estilo do Python recomenda evitar negações desnecessárias.

Fontes

Seu progresso fica salvo neste aparelho. Assinantes sincronizam entre os aparelhos.