Menu

if, elif, else em Python: instruções condicionais e expressões ternárias

Como as instruções if, elif e else do Python funcionam — incluindo valores truthy, condições aninhadas e a expressão if ternária.

Uma decisão, com cara de inglês

if é a primeira ferramenta que a maioria dos programas pega. Deixa seu código seguir um caminho quando uma condição é verdadeira e outro caminho quando não é. O Python expressa isso diretamente:

main.py
Output
Click Run to see the output here.

Duas linhas, uma decisão. A linha do if termina em dois pontos. A linha indentada abaixo é o corpo do if — o código que roda se a condição é verdadeira. Se hour fosse 15, o corpo seria pulado inteiro e nada seria impresso.

A indentação é a estrutura aqui. O Python sabe quais linhas pertencem ao if olhando para o espaço em branco no começo. Quatro espaços por nível é a convenção; seja consistente.

Adicionando um ramo else

Muitas vezes você quer que algo aconteça de qualquer jeito: isso quando a condição é verdadeira, aquilo caso contrário. else é assim:

main.py
Output
Click Run to see the output here.

A linha do else não tem condição — ela pega tudo o que o if não pegou.

Vários ramos com elif

Para mais de dois caminhos, empilhe cláusulas elif ("else if") entre if e else:

main.py
Output
Click Run to see the output here.

O Python percorre as condições de cima para baixo e roda o bloco da primeira que for verdadeira. O resto é pulado. Essa ordem de cima para baixo importa: se você colocar score >= 60 antes de score >= 90, todo mundo tira D — a primeira condição verdadeira vence.

Uma estrutura organizada para lembrar: as condições devem ser mutuamente exclusivas para qualquer entrada, e a ordem deve refletir como você naturalmente pensa sobre o problema. Coloque os casos mais específicos primeiro, os mais gerais por último.

Valores truthy em condições

A expressão no if não precisa resultar num literal True ou False. O Python aceita qualquer valor e decide sua truthiness:

main.py
Output
Click Run to see the output here.

if items: se lê como "se a lista tem algo dentro". Valores falsy incluem:

  • False
  • 0, 0.0
  • None
  • Containers vazios: "", [], {}, set(), ()

Todo o resto é truthy. Usar truthiness deixa o código mais natural, com uma ressalva: se zero é um valor significativo (um contador legitimamente em zero), compare explicitamente com is not None ou != 0 para evitar a confusão "vazio = zero".

Combinando condições

and, or e not deixam você construir condições compostas:

main.py
Output
Click Run to see the output here.

Comparações encadeadas são mais organizadas do que um and explícito quando os extremos compartilham um valor central:

main.py
Output
Click Run to see the output here.

Isso é o mesmo que 18 <= age and age < 65, mas se lê como desigualdade matemática.

if aninhado

Você pode colocar if dentro de if. É legal, e às vezes a estrutura mais clara — mas também é o principal jeito de código condicional virar difícil de acompanhar. Se você se vê três níveis fundo, considere achatar com returns antecipados (quando estiver escrevendo funções) ou combinando condições:

main.py
Output
Click Run to see the output here.
main.py
Output
Click Run to see the output here.

Os dois funcionam. Escolha a versão que lê melhor para um leitor que ainda não viu esse código.

A expressão ternária

Quando você só quer que um valor seja uma de duas coisas dependendo de uma condição, o Python tem uma forma compacta:

main.py
Output
Click Run to see the output here.

Leia da esquerda para a direita: "warm se temp é pelo menos 70, senão cool". É ótimo para atribuições curtas de ou um ou outro. Pare de usar quando os ramos ficam longos ou contêm várias operações — nesse ponto, um bloco if/else completo é mais fácil aos olhos.

if é expressão só num lugar

Diferente de algumas linguagens, a instrução if do Python em si não produz um valor. Só a forma ternária produz. Você não pode escrever x = if ...: como pode em Rust ou Kotlin. Se você quer um valor condicional, use o ternário; se quer comportamento condicional, use um bloco if completo.

Um pequeno exemplo completo

Um programinha que classifica uma temperatura:

main.py
Output
Click Run to see the output here.

Repare que a lógica é basicamente decidir o que advice deve ser. Dá para ver num relance qual intervalo de temperatura mapeia para qual mensagem. É esse o formato que você busca ao escrever condições — cada ramo deve ser pequeno e a intenção geral óbvia.

O que vem

Condições deixam seu código escolher um caminho. Laços deixam repetir. A seguir: laços for, o laço mais comum em Python por larga margem, e o parceiro natural das coleções que você vai conhecer algumas páginas à frente.

Perguntas frequentes

Como uma instrução if funciona em Python?

if condicao: seguido de um bloco indentado roda o bloco só quando a condição é verdadeira. Cláusulas opcionais elif (else if) permitem checar condições adicionais, e um else opcional roda quando nada mais bateu.

Python tem uma instrução switch?

Python 3.10 adicionou match/case para pattern matching estrutural, que cobre a maioria dos casos de uso de switch e mais. Para ramificação simples, uma sequência de if/elif ainda é comum e perfeitamente boa.

O que é um if ternário em Python?

Uma expressão condicional de uma linha: resultado = a if condicao else b. Se lê da esquerda para a direita — avalia a quando condicao é verdadeira, senão avalia b. Útil para atribuições curtas do tipo ou um ou outro; menos legível quando os ramos ficam longos.

Aprenda a programar com o Coddy

COMEÇAR