Trilha de aprendizado · Nível 1 · Tutorial 7

Localizar e corrigir erros básicos

Ao concluir, você conseguirá usar a localização e a mensagem de um erro simples para corrigir problemas comuns de escrita, nomes, tipos, conversões e indentação.

  • Nível: Iniciante
  • Duração: 16 min
  • 8 passos
Localizar e corrigir erros básicos

O que você vai percorrer

  1. Encontrar as pistas na saída de erro Identifique onde a falha ocorreu, leia a mensagem final e organize os próximos passos da investigação. 2 min
  2. Corrigir erros de sintaxe Diferencie erros de sintaxe de falhas durante a execução e corrija aspas ou parênteses incompletos. 2 min
  3. Investigar nomes que não foram definidos Use o nome citado em NameError para corrigir diferenças de escrita ou uma atribuição fora de ordem. 2 min
  4. Relacionar TypeError à operação Relacione a operação aos tipos envolvidos e escolha uma correção que preserve a intenção de calcular ou exibir um resultado. 2 min
  5. Reconhecer valores que não podem ser convertidos Identifique o conteúdo que causou um ValueError e escolha uma entrada ou conversão adequada à intenção do programa. 2 min
  6. Localizar uma divisão por zero Encontre o divisor que causou a falha, investigue sua origem e teste novamente com um dado válido. 2 min
  7. Corrigir recuos indevidos Reconheça um recuo inesperado e alinhe as instruções de um script sequencial para corrigir IndentationError. 2 min
  8. Aplicar o ciclo de correção Corrija três defeitos em um script no seu computador, registre as causas e confira o resultado final. 3 min

O que você vai aprender

  • Identificar o arquivo, a linha indicada e a mensagem final em uma saída de erro simples.
  • Distinguir erros de sintaxe de falhas que surgem durante a execução.
  • Corrigir aspas ou parênteses incompletos e nomes de variáveis escritos incorretamente ou usados antes da atribuição.
  • Relacionar mensagens de TypeError, ValueError e ZeroDivisionError a operações ou entradas incompatíveis.
  • Explicar que a indentação delimita blocos em Python e corrigir recuos indevidos em scripts sequenciais.

Antes de começar

  • Executar Python no modo interativo e em scripts
  • Ler entradas e converter tipos

Passo 1 de 8

Encontrar as pistas na saída de erro

Identifique onde a falha ocorreu, leia a mensagem final e organize os próximos passos da investigação.

Uma saída de erro traz pistas

Imagine este código salvo em um arquivo chamado relatorio.py. Ao executá-lo, o Python exibe uma mensagem que ajuda a localizar a falha.

Código de relatorio.py

python
print("Início")
print(total)
print("Fim")

Exemplo de saída

text
Início
Traceback (most recent call last):
  File "relatorio.py", line 2, in <module>
    print(total)
NameError: name 'total' is not defined

Onde olhar

  • Arquivo: File "relatorio.py" indica qual arquivo examinar.
  • Linha: line 2 indica a linha 2 do código, não da saída.
  • Trecho: print(total) mostra a instrução apontada.
  • Mensagem final: NameError é o nome do tipo de erro. Depois dos dois-pontos, name 'total' is not defined descreve o problema: o nome total não está definido.

Por enquanto, concentre-se em encontrar essas pistas; a correção desse tipo de erro virá adiante.

Associe cada pista à sua função

Relacione as partes da saída de erro ao que elas informam.

Toque em um item e depois no par correspondente.

A falha interrompe o caminho

O que chegou a executar?

No exemplo, Início aparece porque a primeira instrução foi executada. A falha ocorre na segunda instrução e interrompe o script: Fim não é exibido.

Uma falha durante a execução não desfaz o que já aconteceu, mas impede que as instruções seguintes sejam alcançadas.

Um ciclo para investigar

Leia a mensagem final → examine o trecho no arquivo e na linha indicados → faça um ajuste pontual → salve o arquivo → execute novamente e confira a saída.

Evite mudar várias coisas de uma vez: um ajuste por vez ajuda a verificar seu efeito.

Dica

Procure as pistas, não um texto decorado

A redação e os marcadores, como setas ou sublinhados, podem variar entre versões do Python. Não é preciso memorizar a mensagem inteira: procure a localização, o tipo de erro e a descrição.

Organize a investigação

O script parou com uma mensagem de erro. Ordene as ações do ciclo apresentado.

  1. Examinar o trecho no arquivo e na linha indicados.
  2. Executar novamente e conferir a saída.
  3. Salvar o arquivo alterado.
  4. Fazer um ajuste pontual no código.
  5. Ler o tipo de erro e a descrição na mensagem final.

Passo 2 de 8

Corrigir erros de sintaxe

Diferencie erros de sintaxe de falhas durante a execução e corrija aspas ou parênteses incompletos.

Quando a escrita impede a execução

Um SyntaxError indica que o Python não conseguiu interpretar a escrita como código válido. Em um script, esse erro é detectado antes de executar qualquer instrução — mesmo as que aparecem antes do problema.

Já uma falha durante a execução acontece quando o Python tenta realizar uma instrução com sintaxe válida.

Aspas incompletas

python
print("Olá)

Exemplo

Mensagem e ajuste mínimo

A mensagem pode incluir SyntaxError: unterminated string literal: o texto foi iniciado, mas não foi fechado.

Basta acrescentar as aspas antes do parêntese: print("Olá").

Antes ou durante a execução?

Script A

python
print("Início")
print("Fim"

Script B

python
print("Início")
numero = int("oi")
print("Fim")

Considere cada script executado separadamente. No B, a conversão de "oi" para inteiro falha. Qual afirmação está correta?

Encontre o par que falta

No seu computador, salve este código como sintaxe.py e execute o arquivo. Leia a mensagem e procure o delimitador incompleto.

sintaxe.py

python
print("Início")
print("Total:", 2 + 3
print("Fim")

Dica

O marcador é uma pista

A mensagem pode dizer SyntaxError: '(' was never closed: um parêntese não foi fechado. Examine a linha indicada e o marcador, mas confira também a linha anterior: o Python pode apontar onde percebeu o problema, não onde ele começou.

Acrescente apenas o delimitador que falta, salve e execute novamente. A saída esperada é “Início”, “Total: 5” e “Fim”, em linhas separadas.

Registre a correção

Qual linha você corrigiu em sintaxe.py? Escreva a linha completa após o ajuste e relate a saída que observou ao executar novamente.

Escreva pelo menos 15 caracteres (0/15).

Passo 3 de 8

Investigar nomes que não foram definidos

Use o nome citado em NameError para corrigir diferenças de escrita ou uma atribuição fora de ordem.

Compare o nome citado

NameError indica que um nome não está definido naquele ponto do script. Comece comparando o nome citado na mensagem com o que recebeu um valor.

Arquivo compras.py

python
total = 30
print(Total)

Uma possível saída de erro

text
Traceback (most recent call last):
  File "compras.py", line 2, in <module>
    print(Total)
NameError: name 'Total' is not defined

A mensagem diz que o nome Total não está definido. A atribuição criou total, com inicial minúscula: são nomes diferentes. Trocar print(Total) por print(total) corrige a divergência; ao salvar e executar novamente, a saída será 30.

Corrija a divergência

Observe o nome atribuído

python
pontos = 10
print(ponto)

A execução termina com NameError: name 'ponto' is not defined. Sem alterar a atribuição, complete a linha corrigida para exibir o valor da variável: print(___).

O nome existe, mas só depois

Se a escrita está correta, verifique a ordem. Não basta ter uma atribuição em algum lugar do arquivo: ela precisa ser executada antes do uso.

Script com a ordem incorreta

python
total = preco * 2
preco = 20
print(total)

Ao executar esse script, a linha 1 produz NameError: name 'preco' is not defined. Nesse momento, preco = 20 ainda não foi executada. A correção é mover essa atribuição para antes do cálculo, não mudar o nome.

Atribua antes de usar

Organize as instruções para calcular o preço de duas unidades e exibir o total sem NameError.

  1. preco = 20
  2. total = preco * 2
  3. print(total)

Passo 4 de 8

Relacionar TypeError à operação

Relacione a operação aos tipos envolvidos e escolha uma correção que preserve a intenção de calcular ou exibir um resultado.

Qual operação falhou?

Um TypeError pode indicar que uma operação não é suportada pelos tipos envolvidos. Neste script, a intenção é somar duas unidades à quantidade:

Código com falha

python
quantidade = "3"
print(quantidade + 2)

Mensagem final

text
TypeError: can only concatenate str (not "int") to str

Relacione a mensagem ao trecho

A mensagem diz que só é possível concatenar str com str, não com int. Em quantidade + 2, quantidade contém texto e 2 é inteiro; esse + não faz a soma pretendida.

Se houver dúvida sobre o valor, insira print(type(quantidade)) antes da linha que falha. A saída <class 'str'> confirma o tipo.

Corrigir para calcular

Com quantidade = "3", qual substituição para o print corrige a falha e exibe a soma numérica 5?

Corrigir para apresentar

Se a intenção é exibir um rótulo junto de um número, não é preciso somá-los com +. Uma f-string permite montar a apresentação mantendo o valor numérico:

Apresentação sem soma

python
quantidade = 3
print(f"Quantidade: {quantidade}")
# Saída: Quantidade: 3

Dica

Tipos diferentes não significam erro

3 + 2.5 funciona e resulta em 5.5: int e float são compatíveis nessa soma. Investigue sempre a combinação entre operação e tipos, não apenas se os tipos são diferentes.

Justifique o ajuste

A intenção é exibir Total: 12

python
total = 12
print("Total: " + total)

Esse código gera TypeError. Quais tipos estão envolvidos no +? Escreva uma linha de print corrigida e explique por que ela atende à intenção.

Escreva pelo menos 20 caracteres (0/20).

Passo 5 de 8

Reconhecer valores que não podem ser convertidos

Identifique o conteúdo que causou um ValueError e escolha uma entrada ou conversão adequada à intenção do programa.

O tipo é aceito, mas o conteúdo não

Uma conversão pode aceitar o tipo do argumento e ainda falhar por causa do conteúdo. Nesse caso, ocorre um ValueError. Veja uma tentativa de converter texto em inteiro:

Conversão que falha

python
medida = int("3.5")
print(medida)

Mensagem final

text
ValueError: invalid literal for int() with base 10: '3.5'

A mensagem cita '3.5': esse texto não representa um inteiro no formato esperado por int. Se a medida deve preservar a parte decimal, use float("3.5"). Se o dado deve ser uma contagem inteira, revise a entrada e forneça uma contagem válida, como "3", quando esse for o valor correto.

TypeError: os tipos não são compatíveis com a operação. ValueError: o tipo é aceito, mas o valor não serve para aquela conversão.

Relacione a falha à correção

Associe cada situação ao diagnóstico e ao ajuste que preserva sua intenção.

Toque em um item e depois no par correspondente.

Confirme a causa no seu computador

No seu editor, salve este código como medida.py e execute. Digite 2,5 e observe a mensagem final. Depois, execute novamente e digite 2.5.

medida.py

python
entrada = input("Medida em metros: ")
medida = float(entrada)
print(f"Medida: {medida} m")

Dica

O que conferir

Na primeira execução, procure ValueError e o texto '2,5' na mensagem. Na segunda, a saída esperada é Medida: 2.5 m. A nova entrada confirma o diagnóstico; o programa ainda não corrige entradas inadequadas automaticamente.

Explique o diagnóstico

Na prática com medida.py, por que 2,5 causou ValueError, e não TypeError? Registre o ajuste feito e a saída que você observou na segunda execução.

Escreva pelo menos 30 caracteres (0/30).

Passo 6 de 8

Localizar uma divisão por zero

Encontre o divisor que causou a falha, investigue sua origem e teste novamente com um dado válido.

Qual lado da divisão causou a falha?

ZeroDivisionError indica uma divisão ou cálculo de resto com divisor zero. Isso pode acontecer com /, // e %. O divisor é o valor à direita do operador: 0 / 3 é válido; 3 / 0 não é.

divisao.py

python
itens = 12
pessoas = 0
print(itens / pessoas)

Saída de erro

text
Traceback (most recent call last):
  File "divisao.py", line 3, in <module>
    print(itens / pessoas)
ZeroDivisionError: division by zero

A descrição “division by zero” significa “divisão por zero”. A falha aparece na linha 3, mas a origem do divisor está na atribuição pessoas = 0, na linha 2.

Corrigir sem inventar dados

No exemplo, pessoas recebeu 0. Qual é o próximo passo mais adequado?

Rastreie o divisor até a entrada

No seu computador, salve este código em divisao.py e execute com a entrada 0. Localize a divisão indicada e siga a variável pessoas até o input. Depois, execute novamente com 3, representando um teste de distribuição de 12 itens entre três pessoas. A saída esperada é 4.0.

python
itens = 12
pessoas = int(input("Quantidade de pessoas: "))
print(itens / pessoas)

Dica

O teste confirma a causa, não protege o programa

A entrada 3 permite conferir o cálculo. A entrada 0 ainda interrompe o programa: não adicionamos validação nem tratamento de erros.

Registre seu diagnóstico

Qual variável era o divisor e de onde veio seu valor? Relate o que aconteceu com 0 e com 3. Por que usar 1 no lugar de qualquer zero não seria uma solução geral?

Escreva pelo menos 30 caracteres (0/30).

Passo 7 de 8

Corrigir recuos indevidos

Reconheça um recuo inesperado e alinhe as instruções de um script sequencial para corrigir IndentationError.

Recuo também faz parte da sintaxe

Em Python, a indentação — o espaço antes de uma instrução — delimita blocos de código. Não é só decoração: instruções de um mesmo bloco precisam de recuo consistente.

Nos scripts sequenciais deste tutorial, as instruções estão no nível superior, fora de qualquer bloco interno. Por isso, devem começar na margem esquerda. Observe o recuo indevido antes de print:

recuos.py — com erro

python
total = 12
    print(total)
print("Concluído")

Saída de erro

text
  File "recuos.py", line 2
    print(total)
IndentationError: unexpected indent

IndentationError é um erro de sintaxe relacionado à indentação. A descrição unexpected indent significa “recuo inesperado”. Neste arquivo, a linha 2 começa com espaços onde não deveria. Como o problema é de sintaxe, nenhuma instrução do script é executada.

Escolha o ajuste

No script apresentado, qual ajuste corrige o recuo inesperado sem mudar o que o programa faz?

Corrija no seu editor

No seu computador, crie recuos.py com o código completo da primeira tela, mantendo inicialmente os quatro espaços antes de print(total).

  1. Salve e execute para observar o erro.
  2. Remova os espaços ou tabulações antes de print(total), deixando o p na margem esquerda.
  3. Salve e execute novamente.

Confira a saída esperada:

Saída após a correção

text
12
Concluído

Dica

Espaços, não tabulações

Quando houver um bloco que exija recuo, a convenção é usar quatro espaços por nível. Prefira espaços e não os misture com tabulações. Isso não significa colocar quatro espaços em toda linha: no nível superior deste script, o recuo é zero.

Explique sua correção

Qual recuo você removeu, por que a margem esquerda é adequada neste script e qual saída observou após executar novamente?

Escreva pelo menos 30 caracteres (0/30).

Passo 8 de 8

Aplicar o ciclo de correção

Corrija três defeitos em um script no seu computador, registre as causas e confira o resultado final.

Relacione a mensagem à causa

Qual pista cada erro oferece?

Associe cada tipo de erro ao caso mais específico.

Toque em um item e depois no par correspondente.

Corrija um defeito por vez

Prática no seu computador

No seu editor, salve o código abaixo como compra.py. Ele deve ler o valor de uma compra e o frete, somar os dois e mostrar o total, mas contém três defeitos: um de escrita, um de nome e um de tipo.

Execute o arquivo como está. A cada tentativa, anote o arquivo, a linha indicada e a mensagem final. Examine o trecho, faça apenas o ajuste necessário, salve e execute novamente. Quando as perguntas aparecerem, digite 40 para a compra e 5 para o frete.

Código inicial com três defeitos

python
valor = input("Valor da compra: ")
frete = float(input("Frete: "))
total = valor + fret
print(f"Total: R$ {total:.2f}"

Dica

Uma nova mensagem também é uma pista

Depois de uma correção, outro erro pode aparecer porque o programa avançou até um problema que ainda não havia sido alcançado. Investigue a nova mensagem sem desfazer automaticamente o ajuste anterior. Preserve a intenção: somar valores numéricos, não juntar textos.

Exemplo

Resultado esperado

Com as entradas 40 e 5, a última linha deve ser:

Total: R$ 45.00

Não basta a mensagem de erro desaparecer: confira também se o resultado corresponde à soma.

Registre sua investigação

O que você corrigiu e observou?

Sem enviar o arquivo, relate os três erros na ordem em que apareceram. Para cada um, informe a linha indicada, a causa e o ajuste feito. Diga se salvou e executou após cada ajuste e registre a última linha exibida com as entradas 40 e 5.

Escreva pelo menos 80 caracteres (0/80).

Um procedimento para reutilizar

Resumo

Da mensagem à confirmação

  • Localize o arquivo, a linha indicada e a mensagem final. Use essas pistas para examinar o código e a origem dos valores.
  • Erros de sintaxe impedem o início da execução do script. Nas falhas durante a execução, instruções anteriores podem já ter sido executadas.
  • Faça um ajuste pontual que preserve a intenção do programa. Salve e execute novamente para descobrir o próximo passo.
  • Compare a saída com o resultado esperado. Uma execução bem-sucedida com dados válidos não garante que qualquer entrada funcionará.

Localizar e corrigir erros básicos

Parabéns! Você concluiu: Localizar e corrigir erros básicos

Tutorial concluído! Leve este ciclo para seus próximos scripts: localizar, investigar, ajustar, salvar, executar e conferir.

Baixe o Aplicativo agora para ter acesso a + de 5000 cursos gratuitos, exercícios, certificado e muito conteúdo sem pagar nada!

  • Cursos online 100% gratuitos do início ao fim

    Milhares de cursos online em vídeo, ebooks e áudiobooks.

  • Mais de 60 mil exercícios gratuitos

    Para testar seus conhecimentos no decorrer dos cursos online

  • Certificado Digital gratuito válido em todo o Brasil

    Gerado diretamente na galeria de fotos do seu celular e enviado ao seu e-mail

Aplicativo Cursa na tela de ebook, na tela de curso em vídeo e na tela de exercícios do curso, mais o certificado de conclusão de curso