Módulo 3 - Seu primeiro programa em Python
Erros de sintaxe sem pânico: lendo o que o Python diz
10 min de leitura · por Cesar Gargiulo, revisado pela equipe ValorFinal e GuardiaSec · Atualizado em 01/07/2026
O que você vai aprender
- Provocar e corrigir os três erros mais comuns do iniciante.
- Localizar linha, seta e tipo dentro de uma mensagem de erro.
- Diferenciar SyntaxError de NameError na prática.
- Aplicar o ciclo ler-corrigir-rodar diante de qualquer erro.
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: Erros de sintaxe sem pânico: lendo o que o Python diz.
Os objetivos desta aula. Provocar e corrigir os três erros mais comuns do iniciante. Localizar linha, seta e tipo dentro de uma mensagem de erro. Diferenciar SyntaxError de NameError na prática. Aplicar o ciclo ler-corrigir-rodar diante de qualquer erro.
Veja o essencial, parte por parte.
Os três tropeços clássicos da primeira semana. SyntaxError significa erro de escrita: o Python nem começa a executar, ele avisa antes.
Anatomia da mensagem: linha, seta e tipo. As mensagens vêm em inglês, mas o vocabulário é pequeno e repetitivo: em uma semana você reconhece as frequentes.
O ciclo ler-corrigir-rodar. Conhecidos os erros e a mensagem, falta o método.
Esse foi o resumo do essencial. Para se aprofundar, leia a aula completa e responda os exercícios.
Os três tropeços clássicos da primeira semana
No módulo 1 você quebrou um código de propósito e sobreviveu. Agora vamos organizar esse conhecimento, porque três erros específicos respondem pela maioria dos sustos da primeira semana, e conhecê-los pelo nome tira o mistério. Todos os exemplos abaixo estão errados de propósito; digite cada um no Playground e veja a reclamação de perto.
print("Bem-vindos ao curso!)
# ERRADO de propósito: a aspa dupla abriu e nunca fechou.
# SyntaxError: unterminated string literal (detected at line 1)Tropeço 1: aspa sem fechar. O Python avisa que a string ficou aberta.
print("Bem-vindos ao curso!"
# ERRADO de propósito: o parêntese abriu e nunca fechou.
# SyntaxError: '(' was never closedTropeço 2: parêntese esquecido. A mensagem diz qual símbolo ficou sem par.
Print("Bem-vindos ao curso!")
# ERRADO de propósito: print se escreve com p minúsculo.
# NameError: name 'Print' is not defined. Did you mean: 'print'?Tropeço 3: maiúscula indevida. Repare que aqui o tipo muda: é NameError, não SyntaxError.
O terceiro caso merece um comentário. Print com maiúscula não é erro de escrita: a frase está gramaticalmente válida, então o interpretador começa a executar. O problema estoura na hora de procurar o nome Print, que não existe, porque o Python diferencia maiúsculas de minúsculas. Por isso o tipo é NameError, nome não definido. E olhe a gentileza do Python moderno: ele ainda sugere, você quis dizer print?
Anatomia da mensagem: linha, seta e tipo
Mensagem de erro parece um bloco assustador de texto em inglês, mas tem estrutura fixa, e você só precisa de três informações dela. Veja uma mensagem real, gerada por um arquivo com aspa sem fechar na linha 2, e o mapa das partes.
File "cartao.py", line 2
print("Sou estudante de Python
^
SyntaxError: unterminated string literal (detected at line 2)Uma mensagem de erro completa do Python 3.12. Três pistas: o arquivo e a linha, a seta e o tipo.
| Parte da mensagem | O que ela diz | No exemplo acima |
|---|---|---|
| File e line | Em qual arquivo e em qual linha está o problema | cartao.py, linha 2 |
| A linha reproduzida | O Python copia a linha suspeita para você ver | print("Sou estudante de Python |
| A seta (^) | Aponta o ponto exato, ou o mais próximo, do tropeço | logo depois da aspa que abriu |
| O tipo e a descrição | O nome do erro e um resumo do motivo | SyntaxError: string não terminada |
O mapa da mensagem de erro. Com linha, seta e tipo, a correção quase se resolve sozinha.
Uma honestidade importante: a seta acerta o ponto exato na maioria das vezes, mas não sempre. Um parêntese esquecido, por exemplo, só é sentido pelo Python linhas depois, quando ele percebe que a conta não fecha. Se a linha apontada parecer inocente, olhe também a linha de cima. Esse pequeno ceticismo economiza muitos minutos de encarar a linha errada.
O ciclo ler-corrigir-rodar
Conhecidos os erros e a mensagem, falta o método. Diante de qualquer erro, o caminho é um ciclo de três passos: ler a mensagem procurando linha, seta e tipo; corrigir apenas o que a mensagem aponta; rodar de novo. Se aparecer outro erro, sem drama: repete o ciclo. Programas reais às vezes escondem dois ou três tropeços em fila, e cada rodada revela o próximo.
- LER: encontre o número da linha, a seta e o tipo do erro na mensagem.
- CORRIGIR: mexa só na linha apontada (ou na de cima, se ela parecer inocente). Nada de reescrever o programa inteiro.
- RODAR: execute de novo. Funcionou? Siga em frente. Novo erro? Volte ao passo 1.
O inimigo desse ciclo é o impulso de apagar tudo e recomeçar do zero, que parece produtivo e não é: joga fora o que estava certo junto com o que estava errado, e não ensina nada. Corrigir cirurgicamente, guiado pela mensagem, é mais rápido e treina exatamente a leitura de erro que separa quem progride de quem trava. O módulo 14 aprofunda esse tema com os erros de execução; a base é a que você acabou de montar.
Feche a aula com um exercício de dessensibilização: no Playground, provoque os três tropeços clássicos, um por vez, e corrija cada um usando o ciclo. Aspa sem fechar, parêntese sem par, Print maiúsculo. Ao final, você terá visto e consertado, em ambiente seguro, os erros que respondem pela maior parte da frustração dos iniciantes. Susto visto de perto encolhe.
Teste rápido
Ao executar Print("Oi") com P maiúsculo, o que o Python responde?
Perguntas frequentes
- Errar muito no começo é sinal de que estou indo mal?
- É sinal de que você está programando de verdade. Erros de sintaxe acompanham qualquer pessoa que digita código, do primeiro dia à aposentadoria; o que muda com a experiência é a velocidade de leitura e correção. O objetivo desta aula é encurtar esse tempo, não zerar os erros.
- Qual a diferença entre SyntaxError e NameError, em uma frase?
- SyntaxError é frase mal escrita: o Python nem começa a executar. NameError é frase bem escrita usando um nome que não existe: o Python executa até tropeçar na palavra desconhecida. Aspas e parênteses geram o primeiro; Print maiúsculo gera o segundo.
- Por que o Python não corrige sozinho um erro óbvio?
- Porque adivinhar é perigoso. Num programa grande, uma correção automática errada poderia mudar o comportamento em silêncio, e erro silencioso é o pior tipo que existe. O Python prefere parar e perguntar. A sugestão Did you mean é o máximo de ajuda que ele dá: aponta, mas não decide por você.
- A seta da mensagem de erro sempre aponta o lugar certo?
- Quase sempre, mas não é garantido. Erros de fechamento, como parêntese ou aspa abertos, às vezes só são percebidos linhas depois do ponto real. Regra prática: se a linha apontada parecer correta, examine a linha anterior. Nas versões recentes do Python as mensagens melhoraram bastante nisso.
- Vale usar inteligência artificial para entender uma mensagem de erro?
- Para explicar, vale; para consertar por você, não nesta fase. Pedir que uma IA traduza a mensagem acelera o aprendizado. Colar o código e pedir a correção pronta pula exatamente o treino de leitura que esta aula ensina, e essa habilidade não tem substituto mais adiante.
- O que é o traceback que aparece em alguns erros?
- É o relatório de percurso que o Python imprime nos erros de execução, mostrando o caminho até o problema. Nos programas de uma linha ele é curtinho; em programas com funções, cresce. Você vai destrinchá-lo no módulo 14; por agora, procure as mesmas pistas de sempre: linha e tipo.
Fontes
Seu progresso fica salvo neste aparelho. Assinantes sincronizam entre os aparelhos.