Como dividir os dígitos de um número inteiro e colocar em uma lista ou somar os dígitos de um numero inteiro?

8,347 views
Skip to first unread message

Caio Junior

unread,
Jul 25, 2016, 1:36:36 PM7/25/16
to Python Brasil
Boa tarde galera, estou fazendo uns trabalhos de computação basica e estou meio engasgado nessa parte

Filipe Cifali

unread,
Jul 25, 2016, 1:47:12 PM7/25/16
to python...@googlegroups.com
O que você pode fazer é transformar o inteiro em string e usar o método split para dividir ele, depois fazer o que você precisar convertendo de volta para inteiro.

2016-07-25 14:30 GMT-03:00 Caio Junior <caio.ju...@gmail.com>:
Boa tarde galera, estou fazendo uns trabalhos de computação basica e estou meio engasgado nessa parte

--
--
------------------------------------
Grupo Python-Brasil
http://www.python.org.br/wiki/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:
python-brasi...@googlegroups.com

---
Você recebeu essa mensagem porque está inscrito no grupo "Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-brasi...@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.



--
[ ]'s

Filipe Cifali Stangler

Anderson Ferreira

unread,
Jul 25, 2016, 2:15:28 PM7/25/16
to python...@googlegroups.com

Sou iniciante em python mas vou tentar ajudar.

Primeiro pega a entrada como string.
variavel = raw_input("texto")
Depois divide com split
variavel = variável.split() #desse jeito vai dividir quando tiver espaços em branco, e o resultado vai ser uma lista.
Depois, você pode transformar a lista em int.
variavel = map(int, variavel).
E se precisar, atribuir casa elemento da lista a uma variável diferente.

Diego Nascimento

unread,
Jul 25, 2016, 2:43:04 PM7/25/16
to python...@googlegroups.com
Olá Caio,

Criei funções bem básicas, para vc entender como funciona.

def soma_digitos(numero):
soma = 0
for digito in numero:
soma = soma + int(digito)

return soma

def digito_para_array(numero):
array = []
for digito in numero:
array.append(int(digito))

return array

print(soma_digitos("123456"))
print(digito_para_array("123456"))

Strings podem ser iteráveis, (for) e aih vc faz as operações dentro do
for, na primeira função, converte cada caracter para inteiro e soma
tudo, na segunda função, tbm converte para inteiros no 'for' e joga
para dentro de uma lista, usando a função .append



Em 25 de julho de 2016 15:07, Anderson Ferreira
<andersonfe...@gmail.com> escreveu:

Linux - Junior Polegato

unread,
Jul 25, 2016, 4:55:22 PM7/25/16
to python...@googlegroups.com
Olá!

        Em Python, a string já é tratada com lista em loops e funções, assim pode transforma inteiro em string com str(<inteiro>), e para transforma em lista, se realmente necessário, list(<string>). Tendo uma lista ou string contendo dígitos, para somá-los pode-se usar a função sum(<lista_de_valores>) e para transformar a string em lista de valores, pode-se usar o map(int, <string>).

num_int = 123456789
num_str = str(num_int)
num_list_str = list(num_str)
num_list_int = map(int, num_str)
soma = sum(num_list_int)


-- 

[]'s

Junior Polegato

Rafael Piergiorge

unread,
Jul 26, 2016, 1:33:14 PM7/26/16
to Python Brasil
Pelo que entendi, seria algo assim:

num = input("Digite o numero")
lista = []
soma = 0
for i in num:
    lista.append(i)
    soma = soma + int(i)
    
print "A lista contem: ", lista
print "A soma eh: ", soma

Abs

Eric Chiesse

unread,
Jul 26, 2016, 1:41:55 PM7/26/16
to python...@googlegroups.com
Matematicamente:
Dentro de um loop:
    Faz o resto da divisão por 10 (n % 10) -> Salva o resultado pois é teu primeiro número
    Faça o que vc quer fazer com o número obtido
    Faça a divisão inteira por 10 atualizando o número original (n = n // 10)
    Repete até acabarem os números.


---
Eric

--

Fabio C. Barrionuevo da Luz

unread,
Jul 26, 2016, 2:01:33 PM7/26/16
to python...@googlegroups.com

Algumas implementações, (incluindo essa do Eric) e alguns testes simples de desempenho:

https://gist.github.com/luzfcb/ca79020c487eb10e6b1174009683e498




--
Fábio C. Barrionuevo da Luz
Palmas - Tocantins - Brasil - América do Sul


Blog colaborativo sobre Python e tecnologias Relacionadas, mantido totalmente no https://github.com/pythonclub/pythonclub.github.io .

Todos são livres para publicar. É só fazer fork, escrever sua postagem e mandar o pull-request. Leia mais sobre como publicar em README.md e contributing.md.
Regra básica de postagem:
"Você" acha interessante? É útil para "você"? Pode ser utilizado com Python ou é útil para quem usa Python? Está esperando o que? Publica logo, que estou louco para ler...

Linux - Junior Polegato

unread,
Jul 26, 2016, 3:34:22 PM7/26/16
to python...@googlegroups.com
Em 26-07-2016 14:41, Eric Chiesse escreveu:
Matematicamente:
Dentro de um loop:
    Faz o resto da divisão por 10 (n % 10) -> Salva o resultado pois é teu primeiro número
    Faça o que vc quer fazer com o número obtido
    Faça a divisão inteira por 10 atualizando o número original (n = n // 10)
    Repete até acabarem os números.

Matematicamente, sem a necessidade de criar a lista, creio que a melhor forma seria:

def somar_digitos(n):
   r = 0
   while n:
       r, n = r + n % 10, n // 10
   return r

-- 

[]'s

Junior Polegato

Fabio C. Barrionuevo da Luz

unread,
Jul 26, 2016, 3:46:02 PM7/26/16
to python...@googlegroups.com
Inclui a implementação do Junior no gist:

https://gist.github.com/luzfcb/ca79020c487eb10e6b1174009683e498

inclusive ela é a mais rápida...


--
--
------------------------------------
Grupo Python-Brasil
http://www.python.org.br/wiki/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:
python-brasi...@googlegroups.com

---
Você recebeu essa mensagem porque está inscrito no grupo "Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-brasi...@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.

Linux - Junior Polegato

unread,
Jul 26, 2016, 4:53:18 PM7/26/16
to python...@googlegroups.com
Em 26-07-2016 16:45, Fabio C. Barrionuevo da Luz escreveu:
Inclui a implementação do Junior no gist:

https://gist.github.com/luzfcb/ca79020c487eb10e6b1174009683e498

inclusive ela é a mais rápida...

Como eu disse, sem fazer lista tem muito mais eficiência, portando as rotina 1, 2 e 4 são menos eficientes por criar listas internamente, assim se torna injusto comparar com os outros métodos.

Fiz uma outra versão do seu arquivo, incluindo 7 e 8, e alterando as 1, 2 e 4 para também retornarem lista.

Assim sendo, a comparação deve-se dar entre 3, 5 e 6 de forma a retornar apenas a soma; e outra entre 1, 2, 4, 7 e 8 por retornarem soma e lista.

https://gist.github.com/JuniorPolegato/d1b1f8e09ffedd39156ccf6dcab2510a

-- 

[]'s

Junior Polegato

Eric Chiesse

unread,
Jul 26, 2016, 5:19:41 PM7/26/16
to python...@googlegroups.com
Remover a lista da rotina 1 é trivial.

---
Eric

Reply all
Reply to author
Forward
0 new messages