14 Tipos de Erros Mais Comuns no Python – Soluções

Veja os tipos de erros mais comuns no Python! Entenda o que cada um significa e como você pode corrigi-los com soluções práticas e claras.

Resposta rápida: a maioria dos erros do Python se resolve lendo a última linha da mensagem. SyntaxError e IndentationError são escrita errada; NameError é variável que não existe; KeyError e IndexError são chave ou posição que não existem; TypeError e ValueError são tipo ou valor incompatível; ModuleNotFoundError é biblioteca não instalada.

Caso prefira esse conteúdo no formato de vídeo-aula, assista ao vídeo abaixo ou acesse o nosso canal do YouTube!

Para receber por e-mail o(s) arquivo(s) utilizados na aula, preencha:

 14 Tipos de Erros Mais Comuns no Python – Soluções

Na aula de hoje, quero te apresentar os 14 tipos de erros mais comuns no Python, com soluções práticas e claras, para que você saiba como solucionar cada um quando se deparar com eles.

Nem sempre as mensagens de erros são muito claras, então vou te explicar cada uma delas e te mostrar o que você precisa para corrigir cada erro.

Vamos abordar e resolver os seguintes erros no Python: SyntaxError, IndentationError, NameError, KeyError, IndexError, TypeError, ValueError, ZeroDivisionError, ModuleNotFoundError, FileNotFoundError, PermissionError, UnicodeDecodeError, AttributeError e UnboundLocalError.

Já conhece algum desses erros? Quer aprender o que cada um significa e como solucioná-los? Então faça o download do material disponível e vem comigo que eu vou te mostrar.

SyntaxError no Python – Erro de Sintaxe

O primeiro erro que vamos ver é um dos mais comuns, indicado pela mensagem de SyntaxError no seu editor de código.

Vamos usar o código abaixo como exemplo. Executando esse código, receberemos um erro de sintaxe.

Python
# SyntaxError
populacao = {"Rio de Janeiro" 6000000,
            "São Paulo": 12000000}

print(populacao["Rio de Janeiro"])
SyntaxError

Além da mensagem de erro, o Python também indica em qual linha o problema aconteceu. Isso facilita a identificação do erro para que você possa corrigi-lo.

Nesse caso, o erro está na primeira linha do dicionário populacao, em que não separei a chave do valor utilizando dois pontos, que fazem parte da sintaxe de um dicionário.

Python
# SyntaxError - Corrigido
populacao = {"Rio de Janeiro": 6000000,
            "São Paulo": 12000000}

print(populacao["Rio de Janeiro"])

Os erros de sintaxe podem estar relacionados a parênteses faltando, vírgulas ou pontos trocados. Basta verificar a linha e a sintaxe correta que ela deveria ter para identificar o erro.

IndentationError no Python – Erro de Identação

O IndentationError ocorre quando há espaços inadequados no código, sejam espaços a mais ou a menos na indentação dele.

A indentação é o espaço em branco no início de uma linha de código, a quantidade de espaços. Ela é importante para definir e manter a estrutura do código em Python, indicando blocos de códigos associados.

Python
# IndentationError
populacao = {"Rio de Janeiro": 6000000,
            "São Paulo": 12000000}

cidade = "Rio de Janeiro"

if populacao[cidade] > 1000000:
print("Cidade Grande")

IndentationError

No exemplo acima, as linhas dentro do bloco if não estão indentadas corretamente. A mensagem de erro indica o número da linha onde ocorreu o problema, facilitando a identificação e correção dele.

Python
# IndentationError - Corrigido
populacao = {"Rio de Janeiro": 6000000,
            "São Paulo": 12000000}

cidade = "Rio de Janeiro"

if populacao[cidade] > 1000000:
    print("Cidade Grande")

NameError no Python – Variável Não Declarada

O NameError geralmente acontece quando tentamos usar uma variável que ainda não foi definida.

Por exemplo, tentar imprimir a variável estado sem declará-la previamente resultaria nesse tipo de erro.

Python
# NameError
print(estado)

NameError

Para resolver isso, basta definir a variável adequadamente antes de utilizá-la em seu código.

Python
# NameError - Corrigido
estado = "RJ"

print(estado)

KeyError no Python – Erro de Chave

O KeyError acontece ao buscarmos por uma chave inexistente dentro de uma estrutura como um dicionário.

Por exemplo, se tentarmos acessar a chave Brasília, que não está presente no dicionário, ocorrerá esse erro.

Python
# KeyError

populacao = {"Rio de Janeiro": 6000000,
            "São Paulo": 12000000}

print(populacao["Brasília"])

KeyError

Existem várias formas de tratar esse erro: editar o dicionário original, usar estruturas try e except ou utilizar o método get.

O método get é um dos mais recomendados quando estamos trabalhando com dicionários porque ele ainda fará a busca dentro do dicionário e, se a chave não existir, retornará o valor None.

Python
# KeyError - Corrigido
populacao = {"Rio de Janeiro": 6000000,
            "São Paulo": 12000000}

print(populacao.get("Brasília"))

IndexError no Python – Erro de Índice

As listas e tuplas não possuem chaves como os dicionários, então a busca é feita com base na posição, no índice que aquele elemento ocupa dentro delas.

Quando tentamos acessar um índice que não existe, como o índice 3 em uma lista com apenas duas cidades, obtemos o IndexError. Esse erro indica que você está tentando acessar uma posição inexistente na lista.

Python
# IndexError
cidades = ["Rio de Janeiro", "São Paulo"]
print(cidades[3])
IndexError no Python

É importante entender os diferentes tipos de erros para identificar rapidamente os problemas no código. Muitas vezes, ao iterar ou puxar dados de sistemas externos, alguns valores podem não estar preenchidos.

Quando obtemos um IndexError, verifique qual lista você está acessando e se ela contém menos elementos do que você supõe/espera que ela tenha.

Verificando o tamanho da lista e os elementos presentes nela, você pode verificar quais informações você pode de fato acessar. Por exemplo, poderíamos acessar os índices 0 ou 1, no caso dessa lista.

Python
# IndexError - Corrigido
cidades = ["Rio de Janeiro", "São Paulo"]
print(cidades[1])

TypeError no Python – Erro de Tipo

O TypeError ocorre quando tentamos realizar operações com tipos incompatíveis. Por exemplo, somar números com strings. Ou, como no nosso exemplo, concatenar textos com números sem a conversão adequada.

Python
# TypeError
preco = "R$5,50"
quantidade = 2
mensagem = "Venda de " + quantidade + " produtos saindo a " + preco + " cada"

TypeError

Antes de fazer uma operação entre dados, é importante garantir que esses dados sejam do mesmo tipo. É crucial verificar os tipos de dados envolvidos nas operações que deseja executar.

Para corrigir esse erro, nesse caso, bastaria converter o número em uma string usando a função str().

Python
# TypeError - Corrigido
preco = "R$5,50"
quantidade = 2
mensagem = "Venda de " + str(quantidade) + " produtos saindo a " + preco + " cada"

ValueError no Python – Erro de Valor

O ValueError surge quando uma operação é válida para o tipo de dado, mas falha devido ao conteúdo desse dado. Por exemplo, tentar converter um texto não numérico em um número resulta em um erro de valor.

Python
# ValueError
preco = "R$5,50"
quantidade = 2
preco = float(preco)
valor_compra = preco * quantidade
print(valor_compra)

ValueError

Diferente do TypeError, onde a operação é proibida para aquele tipo específico, o ValueError indica que, embora a operação seja permitida, os dados fornecidos são inadequados para realizá-la corretamente.

No caso do nosso exemplo, a conversão de texto para número float não é possível porque o texto não representa um número válido.

Para corrigir, podemos ajustar a variável preco, removendo o “R$” e substituindo a vírgula por um ponto. Dessa forma, o valor da variável poderá ser convertido corretamente para float.

Ícone PythonPython Impressionador

Você vai aprender a linguagem de Programação que mais cresce no Mundo para fazer automações incríveis, desenvolver sites, fazer análises de dados, trabalhar com Ciência de Dados, Inteligência Artificial, mesmo que você nunca tenha tido nenhum contato com Programação na vida.

Começar agoraSeta para a direita
Fundo PythonTelas Python
Luz Python
Python
# ValueError - Corrigido
preco = "5.50"
quantidade = 2
preco = float(preco)
valor_compra = preco * quantidade
print(valor_compra)

ZeroDivisionError no Python – Erro de Divisão por Zero

O erro ZeroDivisionError acontece quando há uma tentativa de divisão por zero. Embora pareça óbvio evitar isso no código, ele pode ocorrer em situações inesperadas.

Muitas vezes, os números utilizados nas operações vêm de análises ou importações externas, tornando possível que um divisor seja zero sem que isso tenha sido previsto inicialmente.

Python
# ZeroDivisionError
bonus_loja = 1000
vendas = [100, 200, 300, 290, 110, 340, 320, 330, 345]
meta = 350
qtde_bateram_meta = 0

for venda in vendas:
    if venda > meta:
        qtde_bateram_meta += 1

print("Bonus por vendedor:", bonus_loja / qtde_bateram_meta)

ZeroDivisionError

O que acontece nesse exemplo é que, como nenhum vendedor atingiu a meta, a variável qtde_bateram_meta será zero e resultará em um ZeroDivisionError.

É importante entender onde as variáveis são criadas e como elas podem ser afetadas. Isso te ajuda na identificação do motivo pelo qual uma variável pode ser zero.

Existem diversas formas de tratar e corrigir esse erro. Uma delas é criando uma verificação para, caso a variável em questão seja 0, o código retorne outro resultado que não envolva a divisão.

Python
# ZeroDivisionError - Corrigido
bonus_loja = 1000
vendas = [100, 200, 300, 290, 110, 340, 320, 330, 345]
meta = 350
qtde_bateram_meta = 0

for venda in vendas:
    if venda > meta:
        qtde_bateram_meta += 1

if qtde_bateram_meta == 0:
    print("Nenhum vendedor atingiu a meta")
else:
    print("Bonus por vendedor:", bonus_loja / qtde_bateram_meta)

ModuleNotFoundError no Python – Erro de Módulo

Outro erro comum é o ModuleNotFoundError, que ocorre quando você tenta usar uma biblioteca do Python, como o Pandas, mas ela não está instalada no seu computador ou no ambiente virtual que você está utilizando.

Python
# ModuleNotFoundError
import pandas as pd

base = pd.read_csv("base.csv")

print(base)

ModuleNotFoundError

Para resolver esse erro, basta fazer a instalação correta da biblioteca. Execute o comando pip install nome_da_biblioteca.

Instalando a biblioteca

Mesmo após a instalação da biblioteca, o mesmo erro pode ocorrer se a versão do Python utilizada para executar o código for diferente daquela onde a biblioteca está instalada.

Além disso, é importante garantir que a biblioteca esteja instalada dentro do ambiente virtual que você está utilizando.

O uso de ambientes virtuais é recomendável, pois são ambientes isolados onde você pode gerenciar as bibliotecas de forma independente. Certifique-se de que as bibliotecas sejam instaladas e executadas diretamente no ambiente virtual.

Por fim, algumas bibliotecas instalam outras dependências. Então, caso alguma dependência não esteja atualizada corretamente, você pode obter um erro.

Portanto, além de instalar e atualizar a biblioteca principal, pode ser necessário instalar ou atualizar as dependências.

FileNotFoundError no Python – Erro Arquivo Não Encontrado

O FileNotFoundError é um erro muito comum quando trabalhamos com arquivos em Python. Ele significa que um arquivo específico não pôde ser localizado pelo código.

A mensagem desse tipo de erro detalha que o erro ocorreu porque a extensão do arquivo não foi especificada corretamente, resultando na falha ao encontrar o arquivo desejado.

Python
# FileNotFoundError

import pandas as pd

base_copia = pd.read_csv("base")
FileNotFoundError

Você pode solucionar esse erro verificando se o arquivo que você deseja acessar está na pasta correta e se o nome dele está escrito corretamente no código, incluindo a extensão do arquivo.

No caso do nosso exemplo, o erro ocorreu justamente porque o nome do arquivo não continha a extensão. Fazendo essa modificação, o código rodaria sem problemas.

Python
# FileNotFoundError - Corrigido
import pandas as pd

base_copia = pd.read_csv("base.csv")

Outro exemplo que podemos verificar a ocorrência desse erro é quanto ao diretório do arquivo.

Python
# FileNotFoundError
import pandas as pd

base2 = pd.read_csv("base2.csv")

Outro FileNotFoundError

Perceba que a mensagem de erro é semelhante à anterior. Porém, nesse caso, verificando os arquivos, podemos encontrar o base2.csv dentro da pasta “outros“. Então, é importante especificar a subpasta em que seu código deve buscar pelo arquivo.

Python
# FileNotFoundError - Corrigido
import pandas as pd

base2 = pd.read_csv("outros/base2.csv")

Sempre que um arquivo estiver dentro de uma pasta diferente do código principal, será necessário indicar esse caminho para evitar erros.

PermissionError no Python – Erro de Permissão

Esse é um erro que costuma confundir bastante, o PermissionError. Esse erro ocorre quando um arquivo está aberto em outro programa, como o Excel, impedindo que o código faça alterações nesse arquivo.

Por exemplo, com o arquivo base.csv aberto no Excel, vamos tentar executar o código abaixo, modificando e salvando a base2 como base.csv.

Python
# PermissionError
import pandas as pd

base2 = pd.read_csv("outros/base2.csv")

base2.to_csv("base.csv")

PermissionError

Perceba que, diferente dos outros erros, esse não é tão intuitivo e nem apresenta uma mensagem tão clara sobre o que ocasionou o erro, apenas informa que a permissão foi negada.

Isso acontece porque, mesmo sendo o proprietário do arquivo e não tendo nenhuma restrição administrativa, ter um programa utilizando o arquivo resulta em bloqueio para edição pelo código Python.

Dessa forma, ao tentar salvar o arquivo, temos o erro de permissão negada. Para corrigir isso, basta fecharmos o Excel ou outro programa que esteja trabalhando com o mesmo arquivo naquele momento.

Em algumas situações em que não conseguir identificar qual programa está utilizando o arquivo, reiniciar o computador pode ser uma solução eficaz para liberar a permissão.

UnicodeDecodeError no Python – Erro de Codificação

O UnicodeDecodeError é um erro comum ao ler bases de dados ou arquivos de texto no Python, especialmente quando se tenta importar as informações para dentro do código.

No material disponível para download, você encontrará um arquivo de texto que poderá utilizar para verificar esse erro.

Python
# UnicodeError
with open("texto.txt", "r", encoding="ascii") as arquivo:
    texto = arquivo.read()
    print(texto)

UnicodeDecodeError

Esse erro pode parecer confuso à primeira vista, mas ele indica que o arquivo contém caracteres que não podem ser lidos pelo processo atual devido à codificação inadequada.

Existem várias formas de codificar textos, como ASCII e UTF-8. Cada uma possui conjuntos diferentes de caracteres.

A codificação ASCII não consegue ler caracteres especiais (como acentos ou emojis), enquanto a UTF-8 é mais abrangente.

No nosso exemplo, o texto do arquivo está codificado como UTF-8, enquanto tentamos abri-lo com ASCII.

Para resolver o problema, basta determinar a codificação correta na hora de abrir o arquivo, passando para o parâmetro encoding a codificação adequada.

Python
# UnicodeError - Corrigido
with open("texto.txt", "r", encoding="utf-8") as arquivo:
    texto = arquivo.read()
    print(texto)

AttributeError no Python – Erro de Atributo

O AttributeError acontece quando tentamos usar um método inexistente para uma determinada estrutura.

Por exemplo, tentar aplicar um método de dicionários em uma lista Python, como o método get.

Python
# AttributeError
vendas = [100, 200, 300, 290, 110, 340, 320, 330, 345]
print(vendas.get(0))
AttributeError

Nesse caso, a mensagem de erro irá explicar que aquele objeto não possui o atributo que você está tentando acessar ou utilizar.

É importante sempre pesquisar quais funções e métodos são apropriados para a operação que você deseja realizar com aquele objeto, pois tentar usar um método inexistente resultará em erro.

UnboundLocalError no Python – Erro de Variável Local

O último erro que eu separei para te explicar e mostrar como solucionar é o UnboundLocalError. Esse erro indica que uma variável local está sendo acessada antes de ser definida.

Como no exemplo abaixo, em que tentamos fazer um cálculo com a variável taxa antes de defini-la dentro da função calcular_imposto.

Python
# UnboundLocalError
def calcular_imposto(valor):
    imposto = valor * taxa
    taxa = 0.15
    print(imposto)

calcular_imposto(1500)
UnboundLocalError

Como a variável taxa não foi associada a um valor antes do seu uso, temos o erro UnboundLocalError.

Variáveis criadas dentro de funções são consideradas variáveis locais e só existem dentro do escopo da função. Se tentarmos usá-las fora desse contexto ou antes de sua definição, teremos o UnboundLocalError.

Para evitar o UnboundLocalError, deve-se garantir que as variáveis sejam definidas antes de serem utilizadas na função. A ordem das definições é de extrema importância dentro do Python.

Python
# UnboundLocalError - Corrigido
def calcular_imposto(valor):
    taxa = 0.15
    imposto = valor * taxa
    print(imposto)

calcular_imposto(1500)

Conclusão – 14 Tipos de Erros Mais Comuns no Python – Soluções

Nessa aula eu te mostrei 14 tipos de erros mais comuns no Python e como solucioná-los de forma prática e clara.

Mensagens de erro podem ser confusas quando lidamos com elas pela primeira vez, então entender os tipos específicos ajuda na resolução rápida dos problemas encontrados.

Após abordarmos cada um desses erros, fica claro como cada tipo pode impactar o funcionamento do seu código e o que você precisa fazer para resolvê-los ou evitá-los no futuro.

Hashtag Treinamentos

Para acessar outras publicações de Python, clique aqui!


Quer aprender mais sobre Python com um minicurso básico gratuito?

Posts mais recentes da Hashtag Treinamentos