HOWTO · Python

Dividir o inteiro em dígitos em Python

Este tutorial demonstra como dividir inteiros em dígitos em python

Nesta página

Para separar os dígitos de um número inteiro em uma lista, converta-o em texto com str() e depois converta cada caractere em um inteiro com int(). Assim, os dígitos ficam na ordem habitual, da esquerda para a direita. Para números negativos, trate o sinal separadamente e separe os dígitos do valor absoluto; represente zero como [0]. Use aritmética inteira quando não for adequado converter o valor em texto, ou recorra a map() e str.split() quando a entrada já for uma sequência de dígitos separados por espaços em branco.

Use uma compreensão de lista para separar um número inteiro em dígitos em Python

Uma compreensão de lista é a opção mais direta quando a entrada é um número inteiro e o resultado desejado é uma lista de dígitos na ordem habitual, da esquerda para a direita. str() transforma cada dígito decimal em um caractere, e int() converte cada caractere em um inteiro.

num = 13579
digits = [int(character) for character in str(num)]
print(digits)

O código representa os dígitos de 13579 como elementos inteiros. Para zero, a mesma expressão retorna [0]. Para uma entrada negativa, separe os dígitos de abs(num) e mantenha o sinal em uma variável à parte, se a aplicação precisar dele. Um número inteiro não preserva zeros à esquerda; quando eles forem importantes, use o texto original.

Use aritmética inteira para separar um número inteiro em dígitos em Python

Para evitar converter o valor em texto, aplique divmod() repetidamente com 10. Cada resto corresponde ao próximo dígito, começando pela direita; por isso, inverta a lista de dígitos coletados ao final. Trate zero explicitamente, pois, caso contrário, o laço não coleta nenhum dígito. Para entradas negativas, use o valor absoluto e acompanhe o sinal separadamente.

num = -13579
sign = -1 if num < 0 else 1
remaining = abs(num)
digits = []

if remaining == 0:
    digits.append(0)
else:
    while remaining:
        remaining, digit = divmod(remaining, 10)
        digits.append(digit)

digits.reverse()
print(sign, digits)

Essa abordagem aritmética é útil quando a conversão precisa permanecer numérica. A lista continua ordenada do dígito mais significativo para o menos significativo; o sinal fica separado dos valores dos dígitos.

Use map() e str.split() para converter dígitos separados por espaços em inteiros em Python

Use esse método quando a string já contiver tokens de dígitos separados, como uma entrada lida de uma linha. Por padrão, str.split() separa o texto nos espaços em branco, e map() aplica int() a cada token. Esse método não separa um número inteiro comum em seus dígitos individuais.

text = "1 3 5 7 9"
digits = list(map(int, text.split()))
print(digits)

Essa forma é conveniente para valores separados por espaços em branco. Se a origem usar vírgulas ou outro delimitador, passe esse delimitador para split() e verifique se cada token resultante representa um inteiro válido.

Use um laço for para separar uma string de dígitos em inteiros em Python

Quando a origem é uma string de dígitos e um laço explícito facilita a adaptação, percorra um caractere por vez com uma fatia e converta cada fatia usando int(). Tanto o passo quanto a largura da fatia são 1, então cada iteração processa um dígito decimal.

digit_text = "13579"
digits = []

for index in range(0, len(digit_text), 1):
    digits.append(int(digit_text[index:index + 1]))

print(digits)

O laço gera a mesma lista da esquerda para a direita que a compreensão de lista e deixa a etapa de conversão explícita. Use a compreensão de lista para uma conversão concisa de inteiro em dígitos, a aritmética inteira para evitar a conversão em texto, map() com str.split() para tokens já separados e um laço quando precisar personalizar o processamento de cada caractere. Se o texto puder conter um sinal ou separadores, trate esses caracteres antes de converter as fatias de dígitos.