Como corrigir ValueError: invalid literal for int() with base 10?

O erro ValueError: invalid literal for int() with base 10 ocorre quando o Python não consegue converter uma string em um número inteiro.

Como corrigir ValueError: invalid literal for int() with base 10?

Este erro acontece quando o Python tenta converter uma string para um número inteiro utilizando a função int(), mas o conteúdo da string não pode ser interpretado como um número válido.

Exemplo do erro

numero = int("abc")  # Tentando converter uma string não numérica

O código acima gera o erro porque "abc" não pode ser convertido para um número inteiro.

Solução 1: Verificar o conteúdo da string antes da conversão

Antes de converter a string para um número, certifique-se de que ela contém apenas dígitos numéricos.

valor = "123a"
if valor.isdigit():
    numero = int(valor)
else:
    print("A string contém caracteres não numéricos.")

O método isdigit() verifica se a string contém apenas números, evitando o erro.

Solução 2: Usar try-except para capturar o erro

Outra abordagem é utilizar try-except para evitar que o programa quebre ao tentar converter valores inválidos.

try:
    numero = int("456xyz")
except ValueError:
    print("Erro: a string contém caracteres inválidos para conversão.")

Se a conversão falhar, o bloco except trata o erro e exibe uma mensagem apropriada.

A conversão de tipos é uma prática comum na programação, mas pode gerar erros quando não realizada corretamente. Ao converter strings para números, é importante verificar se os dados são realmente válidos. Utilizar técnicas como validação prévia ou tratamento de exceções pode evitar falhas inesperadas e tornar o código mais robusto.

Algumas aplicações:

  • Entrada de dados em formulários e sistemas interativos.
  • Leitura de valores numéricos de arquivos de texto ou banco de dados.
  • Conversão de valores para cálculos matemáticos e estatísticos.

Dicas para quem está começando

  • Sempre verifique se a string contém apenas números antes da conversão.
  • Utilize try-except para evitar que o programa quebre ao tentar converter valores inválidos.
  • Prefira métodos de validação como isdigit() ou expressões regulares para garantir entradas corretas.
  • Ao processar dados de entrada do usuário, sempre trate possíveis erros de digitação.

Contribuições de João Gutierrez

Compartilhe este tutorial: Como corrigir ValueError: invalid literal for int() with base 10

Compartilhe este tutorial

Continue aprendendo:

Como lidar com RecursionError: maximum recursion depth exceeded

O erro RecursionError ocorre quando uma função recursiva excede o limite máximo de chamadas permitido pelo interpretador Python.

Tutorial anterior

O que causa UnicodeDecodeError ao lidar com arquivos e como resolver

O erro UnicodeDecodeError ocorre ao tentar abrir arquivos com uma codificação incorreta, impedindo a leitura correta do conteúdo.

Próximo tutorial