✅ Artigo atualizado em Setembro 2026 Novas seções sobre indentação,
elifvs váriosife condições compostas comand/or/not, tabela de decisão (if/elif,match/case, dicionário ou ternário), erros comuns com traceback e 8 exercícios resolvidos. Código testado no Python 3.10+.
Resposta rápida
As estruturas condicionais if, elif e else fazem o Python executar um bloco de código só quando uma condição é verdadeira. A sintaxe é if condição: seguido do bloco indentado (4 espaços); elif outra_condição: testa alternativas e else: cobre o que sobrou.
1
2
3
4
5
6
7
nota = 7.5
if nota >= 7:
print("Aprovado") # <- é este que roda
elif nota >= 5:
print("Recuperação")
else:
print("Reprovado")
Resumo em 30 segundos:
- Só o
ifé obrigatório;elifeelsesão opcionais, e oelsevem sempre por último. - Numa cadeia
if/elif/else, no máximo um bloco roda: o do primeiro teste verdadeiro. - A indentação define o bloco; esquecer dela gera
IndentationError, e esquecer os:geraSyntaxError. - Use
==para comparar;=é atribuição (if x = 10:é erro de sintaxe). -
0,"",[],{}eNonesão falsy:if lista:já testa se a lista tem itens.
Salve, salve Pythonista!
Nesse post vamos falar sobre as estruturas que controlam o fluxo de execução de programas Python: if, elif, else, o ternário, o match/case e as condições compostas. Vai ser difícil você abrir um código Python e não encontrar um if, então vale dominar os detalhes - inclusive os que mais caem em prova.
Bora pro conteúdo!
Vá Direto ao Assunto…
- Introdução
- Estrutura Condicional
if - Sintaxe do if em Python: dois pontos e indentação
- Estrutura Condicional
if/else - Estrutura Condicional
if-elif-else - Diferença entre elif e vários if
- Estrutura Condicional Ternária (
ifem uma linha) ifAninhado (nested if)- Condições compostas com and, or e not
- Comparações Encadeadas
- Truthiness: o que o
ifconsidera “verdadeiro” match/case: Structural Pattern Matching (Python 3.10+)- Estruturas de Repetição com Estruturas Condicionais
- List Comprehensions com
if - Erros comuns
- Exercícios resolvidos
Introdução
O que são estruturas condicionais (if/elif/else) em Python? São comandos que executam um bloco de código apenas se uma condição for verdadeira. O
iftesta a condição principal, oeliftesta condições alternativas e oelsecobre o caso em que nenhuma das anteriores foi atendida - é assim que o programa toma decisões e controla seu fluxo.
É muito comum na programação, precisarmos que determinado bloco de código seja executado apenas se determinada condição for satisfeita.
Para esses casos, Python disponibiliza formas de se controlar o fluxo de execução de programas: são as chamadas Estruturas Condicionais IF/ELIF/ELSE.
Um conceito muito importante para se trabalhar com condições em Python é entender o conceito dos Operadores: is, not, %=, ==, in entre outros.
Falando nisso, nós temos um post completo sobre Operadores que você pode conferir clicando aqui!
Agora, vamos começar com uma das estruturas condicionais mais utilizadas no Python: o if!
Estrutura Condicional if
O if executa um bloco de código somente quando sua condição é verdadeira; se a condição for falsa, o bloco é ignorado.
Agora que já está craque com os Operadores do Python, vamos aprender sobre nossa primeira estrutura condicional.
Antes de escrever condições, vale ter à mão os principais operadores de comparação e operadores lógicos que usamos dentro de um if:
| Operador | Significado | Exemplo | Resultado |
|---|---|---|---|
== |
Igual a | 10 == 10 |
True |
!= |
Diferente de | 10 != 5 |
True |
> |
Maior que | 10 > 5 |
True |
< |
Menor que | 10 < 5 |
False |
>= |
Maior ou igual a | 5 >= 5 |
True |
<= |
Menor ou igual a | 4 <= 3 |
False |
and |
E (ambas verdadeiras) | True and False |
False |
or |
Ou (ao menos uma) | True or False |
True |
not |
Negação (inverte) | not True |
False |
Sua sintaxe é bem simples, bastando utilizarmos if seguido pela condicao seguido por dois pontos:
Veja o exemplo a seguir:
1
2
3
4
valor = 10
if valor > 5:
print('O valor é maior que 5.')
Neste caso, a condição está testando se o valor presente na variável valor é maior que 5.
Caso isso aconteça, a linha de código abaixo será executada (nesse exemplo, a chamada à função print()).
A documentação oficial descreve essa estrutura na seção Comandos if do tutorial do Python.
Como 10 é maior que 5 o bloco de código resulta em:
1
O valor é maior que 5.
Caso você precise que um bloco de código seja sempre executado, basta adicionar True à condição:
1
2
if True:
print("Este bloco sempre irá ser executado.")
Resultado do código acima:
1
Este bloco sempre irá ser executado.
Sintaxe do if em Python: dois pontos e indentação
Em Python não há chaves { } nem end if: quem diz onde o bloco do if começa e termina é a indentação. As regras são poucas:
- A linha do
if(e de cadaelif/else) termina com dois pontos:. - Tudo que pertence ao bloco fica indentado com o mesmo recuo - o padrão da PEP 8 é 4 espaços.
- A primeira linha que volta ao recuo do
ifjá está fora do bloco e roda sempre. -
elifeelseficam alinhados com oifa que pertencem.
1
2
3
4
5
6
7
saldo = 50
valor = 80
if valor > saldo:
print('Saldo insuficiente') # dentro do if
print('Operação cancelada') # dentro do if
print('Fim do programa') # fora do if: roda sempre
Resultado do código acima:
1
2
3
Saldo insuficiente
Operação cancelada
Fim do programa
Se o saldo fosse 100, só a última linha seria impressa. Quando a indentação está errada, o Python nem começa a executar o programa: ele acusa IndentationError (veja exemplos reais na seção Erros comuns).
Dica: um bloco não pode ficar vazio. Se você ainda não sabe o que colocar dentro do
if, usepasscomo marcador provisório.
Estrutura Condicional if/else
O else define um bloco que roda quando a condição do if é falsa, garantindo um caminho alternativo para o seu código.
Vimos na seção acima que o if executa um bloco de código se sua condição for atendida, mas e se ela não for atendida e você deseja realizar outra ação? ![]()
Bom, basta utilizarmos a estrutura condicional else!
Com ela, toda vez que uma condição não for atendida, o Python executará o bloco de código definido abaixo da cláusula else.
Vamos esclarecer no exemplo abaixo:
1
2
3
4
5
6
idade = 20
if idade < 17:
print('A idade é MENOR que 17')
else:
print('A idade é MAIOR que 17')
Neste caso, a condição testa se o valor da variável idade é menor que 17.
Porém, como 17 é menor que 20, o bloco else é então executado, resultando em:
1
A idade é MAIOR que 17
Está curtindo esse conteúdo? ![]()
Que tal receber 30 dias de conteúdo direto na sua Caixa de Entrada?
Estrutura Condicional if-elif-else
O elif (abreviação de else if) permite testar várias condições em sequência: o Python avalia cada elif na ordem e executa o primeiro cujo teste for verdadeiro.
O elif é utilizado quando mais de uma condição if precisa ser testada. Exemplo:
1
2
3
4
5
6
7
8
9
10
linguagem = "Python"
if linguagem == "C++":
print('C++ é uma linguagem de programação compilada.')
elif linguagem == "Python":
print("Python é uma linguagem de programação de alto nível")
elif linguagem == "Java":
print("Java é uma linguagem de programação amplamente utilizada no mercado")
else:
print('Não é nenhuma das três opções')
Neste exemplo, estamos verificando o valor da variável linguagem em diversos testes.
Note que a saída abaixo é exatamente o resultado da execução do elif, já que o valor da variável linguagem é igual à “Python”:
1
Python é uma linguagem de programação de alto nível
Três regras do elif que costumam cair em prova:
- Ele é opcional e pode aparecer quantas vezes você quiser, sempre depois do
ife antes doelse. - O
elsetambém é opcional, mas se existir é único e vem por último. - Não existe
else ifem Python: a palavra éelif(escreverelse ifgeraSyntaxError).
Diferença entre elif e vários if
Essa é a dúvida mais comum sobre o elif. Numa cadeia if/elif/else, o Python para no primeiro teste verdadeiro e pula todo o resto. Já vários if seguidos são independentes: todos são testados, e mais de um bloco pode rodar.
Veja a mesma nota com vários if:
1
2
3
4
5
6
7
8
nota = 9
if nota >= 5:
print("Recuperação ou melhor")
if nota >= 7:
print("Aprovado")
if nota >= 9:
print("Excelente")
Resultado do código acima (os três testes são verdadeiros, então os três blocos rodam):
1
2
3
Recuperação ou melhor
Aprovado
Excelente
Agora com elif, testando da faixa mais alta para a mais baixa:
1
2
3
4
5
6
7
8
nota = 9
if nota >= 9:
print("Excelente")
elif nota >= 7:
print("Aprovado")
elif nota >= 5:
print("Recuperação")
Resultado do código acima:
1
Excelente
Resumindo:
- Use
if/elif/elsequando as opções são mutuamente exclusivas (faixas de nota, menu de opções). Além de evitar saídas duplicadas, o Python deixa de avaliar os testes restantes. - Use vários
ifquando as verificações são independentes e mais de uma pode valer ao mesmo tempo (ex.: validar vários campos de um formulário e mostrar todos os erros). - Com
elif, a ordem importa: se o testenota >= 5viesse primeiro, uma nota 9 cairia nele e nunca chegaria em “Excelente”.
Estrutura Condicional Ternária (if em uma linha)
O operador ternário condensa um if/else em uma única linha no formato valor_se_verdadeiro if condição else valor_se_falso, ideal para escolher entre dois valores rapidamente.
Python provê uma forma concisa de se testar valores com apenas uma linha de código
São os chamados if-ternários, ou condições ternárias, ou operadores ternários: os nomes são diversos!
Veja um exemplo:
1
2
3
4
5
velocidade = 75
resultado = 'Multado' if velocidade > 60 else 'Dentro do limite'
print(resultado)
Nesse caso, está sendo verificado se o valor da variável velocidade é maior que 60 e:
- Caso a condição seja verdadeira a variável
resultadoreceberá o valorMultado; - Caso a condição seja falsa, a variável
resultadoreceberá o valorDentro do limite.
Bem, pelo resultado abaixo parece que alguém foi multado ![]()
1
Multado
O ternário serve para escolher entre dois valores, não para executar blocos com várias linhas. Dá para aninhar (a if x else b if y else c), mas a leitura piora rápido: com três ou mais caminhos, volte para o if/elif/else. Para ordem de avaliação, a armadilha do or com valores falsy e as formas antigas, veja o guia completo do operador ternário.
if Aninhado (nested if)
Um if aninhado é simplesmente um if dentro de outro if, usado quando uma decisão só faz sentido depois que outra já foi tomada.
Imagine que, para alguém poder dirigir, primeiro ela precisa ser maior de idade e, só então, verificamos se possui carteira:
1
2
3
4
5
6
7
8
9
10
idade = 25
possui_carteira = True
if idade >= 18:
if possui_carteira:
print('Pode dirigir')
else:
print('Precisa tirar a carteira')
else:
print('Menor de idade')
Resultado do código acima:
1
Pode dirigir
Repare que o else interno pertence ao if possui_carteira, enquanto o else externo pertence ao if idade >= 18. A indentação é o que define a qual if cada else está ligado. ![]()
Condições compostas com and, or e not
Quando uma decisão depende de mais de um teste, você combina as condições com os operadores lógicos, em vez de aninhar vários if:
-
and: verdadeiro só se as duas condições forem verdadeiras; -
or: verdadeiro se pelo menos uma for verdadeira; -
not: inverte o resultado (not TrueéFalse).
1
2
3
4
5
6
7
8
9
10
11
12
13
14
idade = 20
tem_ingresso = True
acompanhado = False
if idade >= 18 and tem_ingresso:
print("Pode entrar")
if idade < 12 or acompanhado:
print("Precisa de responsável")
else:
print("Não precisa de responsável")
if not acompanhado:
print("Está sozinho")
Resultado do código acima:
1
2
3
Pode entrar
Não precisa de responsável
Está sozinho
Dois detalhes que fazem diferença:
1. Precedência: not é avaliado primeiro, depois and, depois or. Na dúvida, use parênteses - eles também deixam a intenção clara para quem lê:
1
2
print(True or False and False) # and primeiro: True or (False and False)
print((True or False) and False) # parênteses mudam a ordem
1
2
True
False
2. Curto-circuito: o Python para de avaliar assim que sabe o resultado. Num and, se o primeiro teste for falso, o segundo nem é executado. Isso permite escrever testes seguros como este, que não quebra com a lista vazia:
1
2
3
4
5
6
lista = []
if lista and lista[0] > 10:
print("primeiro maior que 10")
else:
print("lista vazia ou primeiro <= 10")
1
lista vazia ou primeiro <= 10
Sem o lista and na frente, lista[0] levantaria IndexError: list index out of range. Para ver todos os operadores com mais exemplos, confira o guia de operadores aritméticos, de comparação e lógicos em Python.
Comparações Encadeadas
O Python permite encadear comparações de forma matemática e legível, como if 0 < x < 10:, em vez de escrever if x > 0 and x < 10:.
Veja na prática:
1
2
3
4
x = 7
if 0 < x < 10:
print('x está entre 0 e 10')
Resultado do código acima:
1
x está entre 0 e 10
Essa sintaxe é idiomática em Python (parece até notação de matemática!) e funciona com qualquer operador de comparação, como if 0 <= nota <= 100:.
Truthiness: o que o if considera “verdadeiro”
O if não exige um True ou False explícito: ele avalia a “verdade” (truthiness) do objeto que recebe. Valores considerados falsy (avaliados como False) fazem o bloco não executar.
Os valores falsy em Python são:
| Valor falsy | O que representa |
|---|---|
0 / 0.0
|
Número zero |
'' |
String vazia |
[] |
Lista vazia |
{} |
Dicionário vazio |
() |
Tupla vazia |
set() |
Conjunto vazio |
None |
Ausência de valor |
False |
O booleano falso |
Qualquer outro valor é considerado truthy (avaliado como True). Por isso, em vez de escrever if len(lista) > 0:, o jeito idiomático é deixar o próprio if avaliar a lista:
1
2
3
4
5
6
carrinho = []
if carrinho:
print('Tem itens no carrinho')
else:
print('O carrinho está vazio')
Resultado do código acima:
1
O carrinho está vazio
Como a lista está vazia ([] é falsy), o bloco else é executado. Esse padrão deixa o código mais limpo e legível. ![]()
Cuidado com as pegadinhas: a string '0' e a lista [0] não são vazias, então são truthy. Você pode conferir qualquer valor com bool() (o tipo booleano é explicado no post sobre tipos de variáveis no Python):
1
2
for valor in [0, '', [], None, '0', [0], -1]:
print(repr(valor), bool(valor))
1
2
3
4
5
6
7
0 False
'' False
[] False
None False
'0' True
[0] True
-1 True
Depois de dominar if, elif e else, o próximo salto é aplicar essa lógica em projetos de verdade, com suporte de professor quando você travar. É exatamente isso que a Jornada Python oferece:
match/case: Structural Pattern Matching (Python 3.10+)
A partir do Python 3.10 (PEP 634), surgiu o match/case, uma alternativa ao if/elif/else para comparar uma mesma variável contra vários valores ou padrões - semelhante ao switch de outras linguagens, porém mais poderoso.
Veja como tratar diferentes códigos de status HTTP:
1
2
3
4
5
6
7
8
9
10
11
status = 404
match status:
case 200:
print('OK')
case 301 | 302:
print('Redirecionamento')
case 404:
print('Não encontrado')
case _:
print('Outro status')
Resultado do código acima:
1
Não encontrado
Alguns detalhes importantes:
- O
case _:funciona como um “default”, capturando qualquer valor que não casou com os anteriores; - O
|(barra vertical) permite testar vários valores no mesmocase, como emcase 301 | 302:.
Quando usar match/case vs if/elif/else? Use match/case quando você compara uma única variável contra valores ou padrões fixos - fica mais legível que uma pilha de elif. Já para condições com intervalos (if 0 < x < 10:), lógica composta (and/or) ou testes de variáveis diferentes, o if/elif/else continua sendo a melhor escolha. A sintaxe completa (com captura de variáveis, sequências e classes) está na seção match do tutorial oficial.
Existe ainda uma terceira alternativa para trocar uma pilha de elif: o dicionário de despacho, que mapeia cada opção para uma função. Funciona em qualquer versão do Python e é fácil de estender (basta adicionar uma chave). Se você ainda não domina dicionários, veja o guia de dicionários no Python.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
def somar(a, b):
return a + b
def subtrair(a, b):
return a - b
operacoes = {'+': somar, '-': subtrair}
op = '-'
funcao = operacoes.get(op)
if funcao:
print(funcao(10, 3))
else:
print('Operação inválida')
Resultado do código acima:
1
7
Tabela de decisão: qual estrutura condicional usar?
| Situação | Melhor escolha | Exemplo |
|---|---|---|
| Faixas, intervalos ou condições compostas | if/elif/else |
if 0 <= nota < 5: |
| Várias condições independentes (mais de uma pode valer) | vários if separados |
validar cada campo de um formulário |
| Uma variável comparada com valores fixos (Python 3.10+) | match/case |
case 200: / case 404:
|
| Desestruturar tuplas, listas ou dicionários pelo formato | match/case |
case (x, 0): |
| Muitas opções que viram ações, e a lista pode crescer | dicionário de despacho | operacoes[op](a, b) |
| Escolher entre dois valores numa linha | ternário | 'par' if n % 2 == 0 else 'ímpar' |
| Filtrar ou transformar itens de uma lista |
if dentro de list comprehension |
[n for n in nums if n > 0] |
O
match/casesó funciona no Python 3.10 ou superior. Em versões anteriores, ele causa umSyntaxError.
Estruturas de Repetição com Estruturas Condicionais
Podemos juntar as Estruturas de Repetição com as Estruturas Condicionais, que aliás trabalham muito bem juntas.
Se você quer aprender mais sobre estruturas de repetição, loops, for, while e muito mais acesse nosso post feito especialmente para este tema: Loops e estruturas de repetição no Python.
Veja um exemplo dessas estruturas trabalhando em conjunto:
1
2
3
4
5
for numero in range(1, 5):
if numero % 2 == 0:
print(f'O número {numero} é par')
else:
print(f'O número {numero} é ímpar')
Resultado do código acima:
1
2
3
4
O número 1 é ímpar
O número 2 é par
O número 3 é ímpar
O número 4 é par
Nota: O operador % retorna o resto da divisão. ![]()
Criei o Ebookr.ai, uma plataforma que usa IA para gerar ebooks profissionais sobre qualquer tema - com capa gerada por IA, infográficos automáticos e exportação em PDF. Confere!
List Comprehensions com if
Outro lugar onde podemos utilizar as Estruturas Condicionais são nas chamadas List Comprehensions do Python.
Suponha que te peçam para: escrever um código que retorne apenas os números pares de uma sequência de 0 a 10.
Veja como isto poderia ser feito em apenas 1 linha de código!
1
2
list_comp = [numero for numero in range(0, 11) if numero % 2 == 0]
print(list_comp)
Resultado do código acima:
1
[0, 2, 4, 6, 8, 10]
E se, em vez de filtrar, você quiser transformar cada item com um if/else? Aí o ternário vai antes do for (o if sozinho, sem else, vai depois):
1
print(['par' if n % 2 == 0 else 'ímpar' for n in range(5)])
1
['par', 'ímpar', 'par', 'ímpar', 'par']
Esse é o poder das Estruturas de Repetição em conjunto com as Estruturas Condicionais e ainda List Comprehensions!
Python é demais! ![]()
Caso você ainda não conheça as List Comprehensions, vou te recomendar um conteúdo que vale ouro para que possa aprender sobre o assunto: List Comprehensions no Python!
Erros comuns
Estes são os erros com if que mais aparecem em código de iniciante (e em questão de prova). As mensagens abaixo são as reais do Python 3.10+.
1. Usar = no lugar de ==
1
2
3
4
x = 10
if x = 10:
print("dez")
1
SyntaxError: invalid syntax. Maybe you meant '==' or ':=' instead of '='?
= guarda um valor numa variável; == compara. Dentro da condição, use if x == 10:.
2. Esquecer a indentação (IndentationError)
1
2
3
4
idade = 20
if idade >= 18:
print("Maior de idade")
1
IndentationError: expected an indented block after 'if' statement on line 3
O bloco do if precisa estar recuado (4 espaços). Misturar recuos dentro do mesmo bloco também quebra: um recuo a mais gera IndentationError: unexpected indent, e um recuo que não bate com nenhum nível anterior gera IndentationError: unindent does not match any outer indentation level. Configure seu editor para inserir 4 espaços ao apertar Tab.
3. Escrever else if (ou esquecer os dois pontos)
1
2
3
4
5
x = 5
if x > 10:
print("a")
else if x > 3:
print("b")
1
SyntaxError: expected ':'
Em Python a palavra é elif x > 3:. A mesma mensagem SyntaxError: expected ':' aparece quando você esquece os dois pontos no final de if, elif ou else.
4. Comparar o texto do input() com um número
1
2
3
4
idade = "20" # input() sempre devolve str
if idade >= 18:
print("Maior de idade")
1
TypeError: '>=' not supported between instances of 'str' and 'int'
O input() sempre retorna uma string. Converta antes de comparar: idade = int(input("Idade: ")). Veja mais no post sobre input e print: entrada e saída de dados no Python.
5. if x == 1 or 2 (sempre verdadeiro, sem erro nenhum)
1
2
3
4
opcao = 5
if opcao == 1 or 2:
print("Opção 1 ou 2")
1
Opção 1 ou 2
Esse é o pior tipo de erro: não aparece traceback, mas o resultado está errado. O Python lê (opcao == 1) or 2, e 2 é truthy, então a condição é sempre verdadeira. O correto é repetir a comparação (opcao == 1 or opcao == 2) ou, melhor ainda, usar in: if opcao in (1, 2):.
Exercícios resolvidos
Tente resolver antes de abrir a solução. Todos os códigos foram executados e as saídas conferidas.
Exercício 1. Dado numero = 7, escreva um if/else que imprima se o número é par ou ímpar.
Ver solução
1
2
3
4
5
6
numero = 7
if numero % 2 == 0:
print(f'{numero} é par')
else:
print(f'{numero} é ímpar')
Saída: 7 é ímpar
O operador % devolve o resto da divisão. Se o resto por 2 é zero, o número é par; senão, cai no else.
Exercício 2. Dados três números a, b, c = 12, 45, 30, descubra o maior usando if/elif/else (sem usar a função max()).
Ver solução
1
2
3
4
5
6
7
8
9
10
a, b, c = 12, 45, 30
if a >= b and a >= c:
maior = a
elif b >= c:
maior = b
else:
maior = c
print(f'O maior é {maior}')
Saída: O maior é 45
Se o a não é o maior, a disputa fica só entre b e c, por isso o elif compara apenas os dois.
Exercício 3. Classifique a temperatura: abaixo de 15 é “Frio”, de 15 até menos de 25 é “Agradável”, de 25 até menos de 35 é “Quente” e 35 ou mais é “Muito quente”. Teste com temperatura = 28.
Ver solução
1
2
3
4
5
6
7
8
9
10
temperatura = 28
if temperatura < 15:
print('Frio')
elif temperatura < 25:
print('Agradável')
elif temperatura < 35:
print('Quente')
else:
print('Muito quente')
Saída: Quente
Como o elif só é testado quando os anteriores falharam, não é preciso escrever temperatura >= 15 and temperatura < 25: o limite inferior já está garantido.
Exercício 4. Um ano é bissexto se for divisível por 4 e não por 100, ou se for divisível por 400. Escreva a condição e teste com ano = 2024.
Ver solução
1
2
3
4
5
6
ano = 2024
if (ano % 4 == 0 and ano % 100 != 0) or ano % 400 == 0:
print(f'{ano} é bissexto')
else:
print(f'{ano} não é bissexto')
Saída: 2024 é bissexto
Os parênteses deixam claro o agrupamento. Com a mesma condição, 1900 não é bissexto (divisível por 100, mas não por 400) e 2000 é.
Exercício 5 (estilo prova). Qual é a saída do código abaixo?
1
2
3
4
5
6
7
8
x = 15
if x > 10:
print('A')
if x > 5:
print('B')
else:
print('C')
- a)
A - b)
AeB - c)
A,BeC - d)
B
Ver solução
Resposta: b.
1
2
A
B
São dois if independentes. O primeiro imprime A. O segundo if forma um par com o else: como 15 > 5 é verdadeiro, imprime B e o else é ignorado. Se o segundo fosse um elif, a saída seria só A.
Exercício 6 (estilo prova). Sobre if, elif e else em Python, analise as afirmativas:
- I. O
ifexecuta um bloco quando a condição é verdadeira. - II. O
elseexecuta um bloco quando nenhuma condição anterior foi atendida. - III. Toda estrutura que tem
elseprecisa ter pelo menos umelif. - IV. Numa cadeia
if/elif/else, mais de um bloco pode ser executado se várias condições forem verdadeiras.
Está correto o que se afirma em:
- a) I e II, apenas.
- b) I, II e III, apenas.
- c) II e IV, apenas.
- d) I, II, III e IV.
Ver solução
Resposta: a. O código prova que III e IV são falsas:
1
2
3
4
5
6
7
8
9
10
11
x = 3
if x > 5:
print('maior que 5')
else: # else sem nenhum elif: válido (III é falsa)
print('5 ou menos')
if x > 1:
print('maior que 1')
elif x > 2: # também é verdadeiro, mas não roda (IV é falsa)
print('maior que 2')
Saída:
1
2
5 ou menos
maior que 1
O elif é opcional, e a cadeia para no primeiro teste verdadeiro: x > 2 também é verdadeiro, mas nunca chega a ser avaliado.
Exercício 7 (estilo prova). Qual é o valor de mensagem depois do código abaixo?
1
2
estoque = 0
mensagem = 'Disponível' if estoque else 'Esgotado'
- a)
'Disponível' - b)
'Esgotado' - c)
0 - d) O código gera
SyntaxError.
Ver solução
Resposta: b.
1
2
3
estoque = 0
mensagem = 'Disponível' if estoque else 'Esgotado'
print(mensagem)
Saída: Esgotado
É um ternário válido. Como 0 é falsy, a condição é falsa e o valor escolhido é o que vem depois do else.
Exercício 8. Usando match/case (Python 3.10+), crie uma função calcular(a, operador, b) que faça +, -, * e /, retorne 'Erro: divisão por zero' quando b for 0 na divisão e 'Operador inválido' para qualquer outro operador.
Ver solução
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
def calcular(a, operador, b):
match operador:
case '+':
return a + b
case '-':
return a - b
case '*':
return a * b
case '/':
return a / b if b != 0 else 'Erro: divisão por zero'
case _:
return 'Operador inválido'
print(calcular(8, '*', 3))
print(calcular(8, '/', 0))
print(calcular(8, '^', 2))
Saída:
1
2
3
24
Erro: divisão por zero
Operador inválido
O case _ funciona como o else final. Repare que dá para combinar estruturas: o case '/' usa um ternário para tratar a divisão por zero.
Conclusão
Nesse post vimos um dos pilares da programação em Python: as Estruturas Condicionais.
Vimos todos os seus sabores e onde podemos utilizá-las para controlarmos o fluxo de execução dos nossos programas em Python!
Quer praticar condicionais, loops e funções construindo projetos guiados do zero? Esse é o caminho do nosso curso de Python completo, a Jornada Python.
Se ficou com alguma dúvida, fique à vontade para deixar um comentário no box aqui embaixo! Será um prazer te responder! ![]()
Perguntas frequentes
O que é if/elif/else em Python?
if/elif/else são as estruturas condicionais do Python: o if executa um bloco quando sua condição é verdadeira, o elif testa condições adicionais e o else roda quando nenhuma condição anterior foi atendida. Servem para controlar o fluxo do programa.
Qual a diferença entre == e = em Python?
São coisas diferentes: = é o operador de atribuição, que guarda um valor numa variável (x = 10), enquanto == é o operador de comparação, que testa se dois valores são iguais e retorna True ou False (x == 10). Em condições, use sempre ==.
O que é o operador ternário em Python?
O operador ternário é um if/else em uma única linha, no formato valor_se_verdadeiro if condição else valor_se_falso. Por exemplo: status = 'par' if n % 2 == 0 else 'ímpar'. É útil para escolher entre dois valores de forma concisa.
Quando usar match/case em vez de if/elif/else?
Use match/case (Python 3.10+) quando comparar uma mesma variável contra vários valores ou padrões fixos - fica mais legível que muitos elif. Para condições com intervalos, ranges ou lógica composta (and/or), prefira if/elif/else.
O que é um valor falsy em Python?
Um valor falsy é aquele que o if trata como False. São eles: 0, 0.0, '', [], {}, (), set(), None e False. Por isso if lista: já testa se a lista tem itens, sem precisar de len(lista) > 0.
O elif é obrigatório em uma estrutura condicional do Python?
Não. Tanto o elif quanto o else são opcionais: a única parte obrigatória é o if. Você pode usar quantos elif quiser (inclusive nenhum) e no máximo um else, que precisa vir por último. A afirmação de prova ‘a palavra-chave elif é opcional, mas pode ser usada para adicionar mais condições’ está correta.
Como escrever else if em Python?
Em Python não existe else if separado: a palavra-chave é elif, que junta as duas. Escrever else if condição: na mesma linha gera SyntaxError: expected ':'. O correto é elif condição:, alinhado com o if e seguido de dois pontos.
Qual a diferença entre usar elif e usar vários if seguidos?
Numa cadeia if/elif/else, o Python para no primeiro teste verdadeiro e ignora o resto, então no máximo um bloco é executado. Com vários if independentes, todos os testes são avaliados e mais de um bloco pode rodar. Por exemplo, com nota = 9, os testes nota >= 5, nota >= 7 e nota >= 9 em if separados imprimem três mensagens; na versão com elif (do maior para o menor) imprime só uma.
"Porque o Senhor dá a sabedoria, e da sua boca vem a inteligência e o entendimento" Pv 2:6