
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.
Trilha de aprendizado · Nível 1 · Tutorial 7
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.
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
Corrigir erros de sintaxe
Diferencie erros de sintaxe de falhas durante a execução e corrija aspas ou parênteses incompletos. 2 min
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
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
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
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
Corrigir recuos indevidos
Reconheça um recuo inesperado e alinhe as instruções de um script sequencial para corrigir IndentationError. 2 min
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

Passo 1 de 8
Identifique onde a falha ocorreu, leia a mensagem final e organize os próximos passos da investigação.
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.
print("Início")
print(total)
print("Fim")Início
Traceback (most recent call last):
File "relatorio.py", line 2, in <module>
print(total)
NameError: name 'total' is not definedFile "relatorio.py" indica qual arquivo examinar.line 2 indica a linha 2 do código, não da saída.print(total) mostra a instrução apontada.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.
Relacione as partes da saída de erro ao que elas informam.
Toque em um item e depois no par correspondente.
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.
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
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.
O script parou com uma mensagem de erro. Ordene as ações do ciclo apresentado.

Passo 2 de 8
Diferencie erros de sintaxe de falhas durante a execução e corrija aspas ou parênteses incompletos.
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.
print("Olá)Exemplo
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á").
print("Início")
print("Fim"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?
No seu computador, salve este código como sintaxe.py e execute o arquivo. Leia a mensagem e procure o delimitador incompleto.
print("Início")
print("Total:", 2 + 3
print("Fim")Dica
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.
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
Use o nome citado em NameError para corrigir diferenças de escrita ou uma atribuição fora de ordem.
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.
total = 30
print(Total)Traceback (most recent call last):
File "compras.py", line 2, in <module>
print(Total)
NameError: name 'Total' is not definedA 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.
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(___).
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.
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.
Organize as instruções para calcular o preço de duas unidades e exibir o total sem NameError.

Passo 4 de 8
Relacione a operação aos tipos envolvidos e escolha uma correção que preserve a intenção de calcular ou exibir um resultado.
Um TypeError pode indicar que uma operação não é suportada pelos tipos envolvidos. Neste script, a intenção é somar duas unidades à quantidade:
quantidade = "3"
print(quantidade + 2)TypeError: can only concatenate str (not "int") to strA 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.
Com quantidade = "3", qual substituição para o print corrige a falha e exibe a soma numérica 5?
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:
quantidade = 3
print(f"Quantidade: {quantidade}")
# Saída: Quantidade: 3Dica
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.
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
Identifique o conteúdo que causou um ValueError e escolha uma entrada ou conversão adequada à intenção do programa.
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:
medida = int("3.5")
print(medida)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.
Associe cada situação ao diagnóstico e ao ajuste que preserva sua intenção.
Toque em um item e depois no par correspondente.
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.
entrada = input("Medida em metros: ")
medida = float(entrada)
print(f"Medida: {medida} m")Dica
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.
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
Encontre o divisor que causou a falha, investigue sua origem e teste novamente com um dado válido.
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 é.
itens = 12
pessoas = 0
print(itens / pessoas)Traceback (most recent call last):
File "divisao.py", line 3, in <module>
print(itens / pessoas)
ZeroDivisionError: division by zeroA 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.
No exemplo, pessoas recebeu 0. Qual é o próximo passo mais adequado?
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.
itens = 12
pessoas = int(input("Quantidade de pessoas: "))
print(itens / pessoas)Dica
A entrada 3 permite conferir o cálculo. A entrada 0 ainda interrompe o programa: não adicionamos validação nem tratamento de erros.
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
Reconheça um recuo inesperado e alinhe as instruções de um script sequencial para corrigir IndentationError.
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:
total = 12
print(total)
print("Concluído") File "recuos.py", line 2
print(total)
IndentationError: unexpected indentIndentationError é 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.
No script apresentado, qual ajuste corrige o recuo inesperado sem mudar o que o programa faz?
No seu computador, crie recuos.py com o código completo da primeira tela, mantendo inicialmente os quatro espaços antes de print(total).
print(total), deixando o p na margem esquerda.Confira a saída esperada:
12
ConcluídoDica
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.
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
Corrija três defeitos em um script no seu computador, registre as causas e confira o resultado final.
Associe cada tipo de erro ao caso mais específico.
Toque em um item e depois no par correspondente.
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.
valor = input("Valor da compra: ")
frete = float(input("Frete: "))
total = valor + fret
print(f"Total: R$ {total:.2f}"Dica
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
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.
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).
Resumo
Parabéns! Você concluiu: Localizar e corrigir erros básicos
Você concluiu este nível!
Agora você vai iniciar: Decisões e repetições
Avaliar condições com comparaçõesConstruir comparações entre valores e prever como números, textos e None são avaliados em um contexto booleano.Milhares de cursos online em vídeo, ebooks e áudiobooks.
Para testar seus conhecimentos no decorrer dos cursos online
Gerado diretamente na galeria de fotos do seu celular e enviado ao seu e-mail
Baixe nosso aplicativo pelo QR Code ou pelos links abaixo:.
+ de 10 milhões
de alunos
Certificado grátis e
válido em todo o Brasil
60 mil exercícios
gratuitos
4,8/5 classificação
nas lojas de apps
Cursos gratuitos em
vídeo, ebooks e audiobooks