Início·Mensagens de erro

python · Python

A mensagem

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

O que significa

Você passou a int() uma string que ele não consegue ler como número inteiro, e o texto entre aspas é essa string. Um ponto decimal como em '3.5', uma string vazia, uma entrada com quebra de linha no fim ou um separador de milhar como em '1,000' são as causas comuns. Para um decimal, int(float(s)) resolve em dois passos — mas descarta a parte fracionária em vez de arredondar — e para qualquer valor digitado por uma pessoa, envolver em try/except ValueError é a correção honesta.

A correção

Não há um comando de uma linha. A explicação diz o que verificar.

Impresso por
python
Python
18

Um traceback do Python divide a resposta em duas partes — a última linha diz o que deu errado e os quadros acima dizem onde — então ler só a última linha dá o nome e perde o lugar; e nos erros de valor ausente, como NoneType e KeyError, a causa quase sempre está num quadro acima daquele que quebrou.

Como ler uma mensagem de erro

  • Leia da primeira linha para baixo. Quanto mais abaixo, mais são as tripas da ferramenta; a causa costuma estar no topo.
  • Se há arquivo e número de linha, comece ali — não o quadro superior da pilha, e sim a linha mais alta que nomeie um arquivo seu.
  • Pesquise a mensagem literal, mas tire primeiro seus caminhos e nomes de variáveis: é isso que impede a busca de casar.
  • A mesma condição é redigida de formas diferentes conforme a versão. Se os resultados não batem, some o número da versão.
  • Antes de colar uma correção, veja o que ela descarta. Algumas não dá para desfazer.

Perguntas frequentes

Q. O que significa “ValueError: invalid literal for int() with base 10: '3.5'”?

Você passou a int() uma string que ele não consegue ler como número inteiro, e o texto entre aspas é essa string. Um ponto decimal como em '3.5', uma string vazia, uma entrada com quebra de linha no fim ou um separador de milhar como em '1,000' são as causas comuns. Para um decimal, int(float(s)) resolve em dois passos — mas descarta a parte fracionária em vez de arredondar — e para qualquer valor digitado por uma pessoa, envolver em try/except ValueError é a correção honesta.

Q. Como corrigir?

Não há comando de uma linha. A explicação acima diz o que verificar.

Q. Qual ferramenta imprime isso?

python. Fica em Python e a mensagem tem 9 palavras.

Erros próximos