Python If...Else
Aprenda como funcionam as instruções if, elif e else em Python — com sintaxe, operadores de comparação, operadores lógicos, condições aninhadas e o operador ternário.
Instruções condicionais permitem que um programa Python escolha entre diferentes caminhos de execução dependendo se uma condição é verdadeira ou falsa. Este capítulo cobre todas as formas de condicionais em Python: if, if-else, if-elif-else, if aninhado e o atalho de uma linha — juntamente com os operadores de comparação e lógicos que fazem as condições funcionarem.
A Instrução if
A instrução if é o condicional mais simples. O bloco indentado é executado somente quando a condição é avaliada como True.
if condition:
# code that runs when condition is TrueExemplo
Python usa indentação (4 espaços por convenção) para definir o bloco — não há chaves. Se a condição for False, o bloco é simplesmente ignorado.
Operadores de Comparação
As condições são construídas a partir de expressões que comparam dois valores. Cada expressão produz um boolean em Python — True ou False.
| Operador | Significado | Exemplo | Resultado |
|---|---|---|---|
== | Igual a | 5 == 5 | True |
!= | Diferente de | 5 != 3 | True |
> | Maior que | 5 > 3 | True |
< | Menor que | 5 < 3 | False |
>= | Maior ou igual a | 5 >= 5 | True |
<= | Menor ou igual a | 4 <= 5 | True |
Consulte Operadores Python para a referência completa de operadores, incluindo operadores aritméticos e de atribuição.
Operadores Lógicos
Os operadores lógicos combinam múltiplas condições em uma única expressão.
| Operador | Retorna True quando… | Exemplo |
|---|---|---|
and | Ambas as condições são True | x > 0 and x < 10 |
or | Pelo menos uma condição é True | x < 0 or x > 100 |
not | A condição é False | not logged_in |
Exemplo — and
Exemplo — or e not
day = "Saturday"
if day == "Saturday" or day == "Sunday":
print("It is the weekend")
logged_in = False
if not logged_in:
print("Please log in")A Instrução if-else
Adicione uma cláusula else para tratar o caso em que a condição é False.
if condition:
# runs when condition is True
else:
# runs when condition is FalseExemplo
Apenas um dos dois blocos será executado em uma determinada execução.
A Instrução if-elif-else
Use elif (abreviação de "else if") para testar várias condições em sequência. Python as verifica de cima para baixo e executa o primeiro bloco que corresponder. O bloco else no final serve como alternativa para quando nenhuma das condições corresponder.
if condition1:
# runs when condition1 is True
elif condition2:
# runs when condition2 is True and condition1 is False
elif condition3:
# runs when condition3 is True and the above are False
else:
# runs when none of the above are TrueVocê pode ter quantas cláusulas elif precisar, mas apenas um if e no máximo um else.
Exemplo — classificação de notas
Por que a ordem importa: assim que Python encontra uma condição True, ele para de verificar. Se você escrevesse score >= 60 primeiro, uma pontuação de 95 imprimiria "Grade: C" porque 95 também é >= 60. Sempre coloque a condição mais específica (mais restritiva) primeiro.
Instruções if Aninhadas
Uma instrução if pode aparecer dentro do bloco de outra instrução if. Isso é chamado de aninhamento e é útil quando você precisa aplicar um teste secundário somente após um teste primário passar.
score = 85
if score >= 60:
if score >= 90:
print("Grade: A")
elif score >= 80:
print("Grade: B")
else:
print("Grade: C")
else:
print("Grade: F")
# Output: Grade: BAtenção: aninhamento profundo torna o código difícil de ler. Prefira cadeias de elif para comparações simples e considere extrair lógica aninhada para uma função quando o aninhamento ultrapassar dois níveis.
Veracidade e Valores Falsy
Python trata muitos valores como implicitamente True ou False sem usar um operador de comparação. Os valores considerados False em um contexto boolean são:
NoneFalse0(inteiro zero),0.0(float zero)""(string vazia),[](lista vazia),{}(dict vazio),()(tupla vazia),set()(conjunto vazio)
Tudo o mais é considerado True. Isso permite escrever guardas concisas:
name = "Alice"
if name:
print("Name is set") # prints because "Alice" is truthy
items = []
if not items:
print("The list is empty") # prints because [] is falsy
value = None
if value is None:
print("No value provided") # use 'is None' for explicit None checksUse is None / is not None (não == None) ao testar especificamente por None — é a convenção de estilo Python e evita correspondências acidentais.
if Abreviado (Expressão Ternária)
A expressão condicional de uma linha em Python atribui um de dois valores com base em uma condição:
value = result_if_true if condition else result_if_falseExemplo
age = 20
status = "adult" if age >= 18 else "minor"
print(status)
# Output: adultIsso é equivalente a:
if age >= 18:
status = "adult"
else:
status = "minor"Use a forma ternária para atribuições simples de valores. Evite aninhá-la — a if c1 else b if c2 else c rapidamente se torna ilegível.
A Instrução pass
Python requer pelo menos uma instrução dentro de cada bloco. Se você quiser definir um ramo if que intencionalmente não faz nada (um placeholder durante o desenvolvimento), use pass:
x = 10
if x > 5:
pass # TODO: handle this case later
else:
print("x is 5 or less")pass é uma operação nula — ela diz ao Python que "este bloco está intencionalmente vazio."
O Operador Walrus := (Python 3.8+)
O operador walrus atribui um valor a uma variável e o testa na mesma expressão. É mais útil quando você precisa do valor testado dentro do bloco if:
numbers = [1, 2, 3, 4, 5]
if (n := len(numbers)) > 3:
print(f"List has {n} items, which is more than 3")
# Output: List has 5 items, which is more than 3Sem :=, você precisaria de uma linha de atribuição separada. Os parênteses em torno de n := len(numbers) são necessários aqui para evitar ambiguidade.
Erros Comuns
Usar = em vez de ==
# Wrong — this is assignment, not comparison, and causes a SyntaxError in conditions
# if x = 5:
# Correct
if x == 5:
print("x is five")Esquecer os dois-pontos
Cada linha if, elif e else deve terminar com :. Um dois-pontos ausente produz um SyntaxError.
Indentação inconsistente
Todas as instruções no mesmo bloco devem usar exatamente a mesma indentação. Misturar tabulações e espaços causa um IndentationError. Use 4 espaços, que é o padrão PEP 8.
O Que Usar em Cada Situação
| Cenário | Melhor escolha |
|---|---|
| Uma condição, ação única | if |
| Dois caminhos mutuamente exclusivos | if-else |
| Três ou mais caminhos | if-elif-else |
| Teste secundário dentro de um ramo | if aninhado |
| Atribuição simples de valor | Ternário x if c else y |
| Verificações de igualdade com múltiplos valores (Python 3.10+) | instrução match |
Prática
Depois de entender os condicionais, o próximo passo natural é repetir código com loops while em Python e loops for em Python.