Módulo 7 - Condições com if, elif e else
Indentação sem erro: a regra dos 4 espaços
9 min de leitura · por Cesar Gargiulo, revisado pela equipe ValorFinal e GuardiaSec · Atualizado em 01/07/2026
O que você vai aprender
- Aplicar a regra dos 4 espaços em todo bloco.
- Reconhecer e corrigir os três IndentationError mais comuns.
- Resolver a questão do Tab contra espaços com o editor.
- Escrever um if dentro de outro sem se perder no recuo.
Ouvir o resumo desta aula
Um recap de cerca de 2 minutos na voz do Valim, para ouvir no trânsito ou na academia.
Ler a transcrição do resumo
Resumo da aula: Indentação sem erro: a regra dos 4 espaços.
Os objetivos desta aula. Aplicar a regra dos 4 espaços em todo bloco. Reconhecer e corrigir os três IndentationError mais comuns. Resolver a questão do Tab contra espaços com o editor. Escrever um if dentro de outro sem se perder no recuo.
Veja o essencial, parte por parte.
No Python, o recuo é gramática. No Python, a indentação define onde cada bloco começa e termina: não é enfeite, é sintaxe.
Três IndentationError reais, com correção. A melhor vacina contra o IndentationError é ver os três formatos dele antes de encontrá-los sozinho.
Tab contra espaços e blocos aninhados. A dúvida clássica: posso apertar Tab em vez de contar espaços?
Esse foi o resumo do essencial. Para se aprofundar, leia a aula completa e responda os exercícios.
No Python, o recuo é gramática
Outras linguagens marcam blocos com chaves e tratam o recuo como decoração. O Python tomou uma decisão diferente e famosa: o recuo é a própria marcação. As linhas deslocadas 4 espaços após um if formam o bloco dele; a primeira linha que volta à margem esquerda está fora. Não há chave para abrir nem fechar. A consequência prática é dupla: todo código Python do mundo tem o mesmo visual arrumado, e um recuo errado deixa de ser deselegância para virar erro de sintaxe.
A regra é uma e curta: 4 espaços por nível de bloco. Esse número vem da PEP 8, o guia oficial de estilo do Python, e é o padrão que todo editor moderno aplica sozinho. Dois espaços funcionam tecnicamente, oito também, desde que consistentes dentro do bloco, mas nadar contra o padrão só compra atrito. Neste curso, 4 espaços, sempre. Seus dedos aprendem em uma semana e o VS Code faz a maior parte do trabalho.
Três IndentationError reais, com correção
A melhor vacina contra o IndentationError é ver os três formatos dele antes de encontrá-los sozinho. Cada exemplo abaixo quebra de um jeito, e o comentário aponta o motivo. Digite-os no laboratório, leia cada mensagem de erro e depois conserte: esse ciclo de dez minutos economiza horas no resto do curso.
idade = 20
if idade >= 18:
print("Maior de idade") # IndentationError: expected an indented block
# Erro 1: o if promete um bloco e a linha de baixo
# está na margem. Correção: recuar o print 4 espaços.Erro 1: faltou indentar. O if terminou em dois pontos, então o Python exige pelo menos uma linha recuada.
print("Bem-vindo!")
print("ao curso de Python") # IndentationError: unexpected indent
# Erro 2: recuo do nada. Não há if, while ou def antes,
# então esse deslocamento não pertence a bloco nenhum.
# Correção: alinhar o segundo print na margem esquerda.Erro 2: sobrou indentação. Recuo só existe a serviço de um bloco; sem bloco aberto, ele é erro.
idade = 20
if idade >= 18:
print("Maior de idade")
print("Pode votar") # IndentationError: unexpected indent
# Erro 3: mistura de niveis no MESMO bloco (4 espaços
# numa linha, 6 na outra). Correção: as duas linhas
# do bloco com exatamente 4 espaços.Erro 3: recuo inconsistente. Linhas do mesmo bloco precisam do mesmo recuo, espaço por espaço.
Repare que as três mensagens dizem coisas diferentes: expected an indented block quando falta recuo, unexpected indent quando sobra ou desalinha. Ler a mensagem antes de sair mexendo no código já revela qual dos três casos você tem em mãos. E todas apontam a linha exata, então a busca nunca é longa.
Tab contra espaços e blocos aninhados
A dúvida clássica: posso apertar Tab em vez de contar espaços? Pode, porque o editor resolve por você. O VS Code, o editor do curso, vem configurado para inserir 4 espaços quando você aperta Tab num arquivo Python, e o Playground faz o mesmo. O perigo real é misturar: um arquivo com Tabs de verdade em umas linhas e espaços em outras gera TabError, primo do IndentationError. Isso acontece quase sempre ao colar código de fontes diferentes. Se aparecer, selecione o bloco no editor e re-indente, ou apague o recuo das linhas e refaça com Tab.
Falta o caso que assusta à primeira vista: um bloco dentro do outro. Um if dentro de um if é perfeitamente legal, e a regra continua a mesma, aplicada em camadas: cada nível soma 4 espaços. O bloco externo fica com 4, o interno com 8. Leia o exemplo da portaria com duas verificações, acompanhando o recuo de cada linha.
idade = 20
tem_ingresso = True
if idade >= 18:
if tem_ingresso:
print("Entrada liberada. Bom show!")
else:
print("Compre o ingresso na bilheteria.")
else:
print("Evento para maiores de 18 anos.")Blocos aninhados: o if interno vive com 4 espaços, o conteúdo dele com 8. Cada else se alinha com o if do próprio nível.
A dica de leitura: cada else pertence ao if que está na mesma coluna que ele. O else de 4 espaços responde ao if tem_ingresso; o else da margem responde ao if idade >= 18. Quando o aninhamento passar de dois níveis, considere reescrever com and (if idade >= 18 and tem_ingresso:) ou com elif, que a aula 4 mostrou. Recuo fundo demais é o código pedindo simplificação.
Teste rápido
Um if termina em dois pontos e a linha seguinte está colada na margem esquerda. O que o Python faz?
Perguntas frequentes
- Por que o Python escolheu indentação em vez de chaves?
- Por legibilidade. Programadores já indentavam código com chaves para conseguir ler; o Python tornou obrigatório o que era boa prática e eliminou as chaves como redundância. O resultado é que todo código Python do mundo tem estrutura visual parecida, o que facilita ler código dos outros.
- Tem que ser 4 espaços ou pode ser 2?
- O Python aceita qualquer quantidade consistente dentro do mesmo bloco, mas a PEP 8, o guia oficial de estilo, define 4 espaços como padrão, e o ecossistema inteiro segue. Usar 2 funciona tecnicamente e atrapalha na prática, porque o seu código destoa de todo exemplo, tutorial e colega. Fique nos 4.
- Apertar Tab é errado então?
- Não. Nos editores configurados para Python, incluindo o VS Code e o Playground do curso, a tecla Tab insere 4 espaços, então apertar Tab é o jeito confortável de seguir a regra. O problema é o caractere de tabulação cru misturado com espaços no mesmo arquivo, situação que gera TabError e nasce quase sempre de colar código de fora.
- Como sei onde um bloco termina se não tem chave de fechamento?
- Pelo recuo: o bloco termina na primeira linha que volta a um nível de indentação menor. Se o bloco do if está com 4 espaços, a primeira linha com 0 espaços já está fora dele. Com o tempo, a leitura vira automática, ajudada pelas linhas-guia verticais que o VS Code desenha.
- Linha em branco no meio do bloco quebra a indentação?
- Não. O Python ignora linhas em branco ao delimitar blocos, então você pode usá-las para respirar o código. O que importa é o recuo das linhas com conteúdo: essas precisam manter o nível do bloco a que pertencem.
- Existe limite de níveis de aninhamento?
- Na prática do dia a dia, não há limite que você vá encontrar. O limite real é o da legibilidade: código com quatro ou mais níveis de recuo fica difícil de acompanhar, e quase sempre um and, um elif ou uma função (módulo 13) achata a estrutura. Recuo profundo é cheiro de código pedindo reforma.
Fontes
Seu progresso fica salvo neste aparelho. Assinantes sincronizam entre os aparelhos.