Python / int() / Converter valores em inteiros
Em Python, int() transforma uma string em formato de inteiro ou um número compatível em um objeto inteiro. Valores de ponto flutuante são truncados em direção a zero: int(-2.7) resulta em -2, sem arredondar nem calcular o piso. Uma string com ponto decimal, como "12.0", não pode ser convertida diretamente.
Conversão básica e valor retornado
int(value) retorna um int; sem argumento, retorna zero. Strings usam base dez por padrão e aceitam espaços ao redor, sinal e sublinhados corretamente colocados entre os dígitos. True e False tornam-se 1 e 0. Veja os formatos aceitos na referência oficial de int().
É necessário apenas Python 3. Salve cada exemplo completo em UTF-8 como int_example.py e execute python int_example.py, ou python3 conforme sua instalação. Substitua o conteúdo do arquivo para testar cada exemplo independentemente.
print(int())
print(int(" +123 "))
print(int("1_024"))
print(int(True), int(False))
text = "12"
number = int(text)
print(number + 3, type(number).__name__)
print(text, type(text).__name__)
Resultado esperado:
0
123
1024
1 0
15 int
12 str
Atribuir o valor convertido a outra variável não altera a string original. Converter "12" permite somar o número 3 e obter 15. Se uma contagem não deve aceitar booleanos, rejeite-os separadamente em vez de depender do sucesso da conversão.
Truncar é diferente de arredondar ou calcular o piso
O truncamento em direção a zero remove a parte fracionária para ambos os sinais. Já math.floor() retorna o maior inteiro que não supera o valor, produzindo uma diferença para negativos. As colunas mostram valor original, int(), math.floor() e round().
import math
for value in (2.7, -2.7):
print(value, int(value), math.floor(value), round(value))
2.7 2 2 3
-2.7 -2 -3 -3
Para -2.7, int() retorna -2 e floor(), -3. Quando o cálculo exige arredondamento, escolha a função correspondente à regra. Um float já pode conter erro de representação; convertê-lo em inteiro não recupera um valor decimal pretendido perdido anteriormente.
Ler strings binárias e hexadecimais com base
int(text, base) informa o sistema de numeração da entrada. As bases permitidas são 2–36 ou 0; zero detecta prefixos como 0b, 0o e 0x. Ao fornecer uma base, o primeiro argumento precisa ser uma string ou um formato de bytes aceito, não um objeto numérico.
print(int("1010", 2))
print(int("ff", 16))
print(int("0xff", 0))
print(int("0b1010", 0))
print(int("010"))
print(int("010", 8))
try:
print(int("010", 0))
except ValueError:
print("ValueError")
10
255
255
10
10
8
ValueError
"010" representa dez na base padrão e oito na base oito. A base zero rejeita essa forma iniciada por zero sem prefixo. O inteiro retornado não guarda uma apresentação hexadecimal; use hex() ou format() separadamente para formatar a saída.
Erros e precisão de inteiros grandes
Uma representação inválida pode gerar ValueError; um tipo incompatível, TypeError. Infinito gera OverflowError, enquanto NaN, “não é um número”, gera ValueError. O exemplo captura apenas as exceções esperadas para continuar verificando as demais entradas.
for value in ("12.0", "1e3", "1,000", "", None, float("nan"), float("inf")):
try:
print(repr(value), int(value))
except (ValueError, TypeError, OverflowError) as error:
print(repr(value), type(error).__name__)
'12.0' ValueError
'1e3' ValueError
'1,000' ValueError
'' ValueError
None TypeError
nan ValueError
inf OverflowError
Usar int(float(text)) muda a política: primeiro lê notação decimal ou exponencial, depois trunca. Strings de inteiros grandes podem perder informação durante a etapa float por causa dos limites da representação de ponto flutuante.
text = "9007199254740993"
print(int(text))
print(int(float(text)))
9007199254740993
9007199254740992
Para ler inteiros com exatidão, use diretamente int(text). Os inteiros de Python não têm um intervalo fixo de 32 ou 64 bits, mas memória e outros recursos continuam finitos. Desde Python 3.11, os limites de conversão de strings inteiras também podem restringir conversões muito longas em certas bases. Limite entradas externas a comprimentos e valores úteis, em vez de simplesmente desativar essas restrições.
Validar uma string como contagem não negativa
Converter com sucesso não garante um valor válido para a aplicação. Esta função aceita strings, converte-as e rejeita resultados negativos. Zero é permitido, assim como sinais, espaços e sublinhados aceitos por int().
def parse_count(text):
if not isinstance(text, str):
raise TypeError("text must be a string")
value = int(text)
if value < 0:
raise ValueError("count must be non-negative")
return value
for text in (" 3 ", "-1", "2.5", ""):
try:
print(repr(text), parse_count(text))
except ValueError:
print(repr(text), "invalid count")
' 3 ' 3
'-1' invalid count
'2.5' invalid count
'' invalid count
Contagens inválidas geram ValueError. Uma interface pode usar tratamento de exceções para pedir outra entrada. Adicione um limite máximo ou uma verificação exclusiva de dígitos ASCII quando necessário. Transformar todos os erros em zero impediria distingui-los de um zero verdadeiro.




