Test Foro de elhacker.net SMF 2.1

Programación => Scripting => Mensaje iniciado por: Joe Fraddy en 3 Febrero 2015, 21:09 PM

Título: suma de un entero en pyhon [RESUELTO]
Publicado por: Joe Fraddy en 3 Febrero 2015, 21:09 PM
Hola amigos, este es un nuevo problema que tengo que resolver, pero no tengo idea de como hacerlo.

Lo que tengo que hacer, si tengo este numero 1234

debe darme como resultado de la suma 10

Esto es porque previamente he dividido en secciones el numero, sumandose así:

1 + 2 + 3 + 4

Espero puedan ayudarme.

Gracias
Título: Re: suma de un entero en pyhon
Publicado por: engel lex en 3 Febrero 2015, 21:18 PM
con un ciclo lo resuelves...

el sumador lo haces
Código (python) [Seleccionar]
sumador = sumador + numero - (numero/10) * 10

la logica de eso es que si numero = 1234
sumador contiene el valor arrastrado
numero / 10 = 123 (porque no lleva decimales)
123 * 10 = 1230
1234 - 1230 = 4


y al final dejas numero en 123 haciendo lo mismo que en el primero paso

el ciclo lo repites mientras numero sea mayor a 0
Título: Re: suma de un entero en pyhon
Publicado por: Joe Fraddy en 3 Febrero 2015, 23:07 PM
No entendí mucho, el caso es que lo que tengo de código es esto:

Código (python) [Seleccionar]
def suma_de_digitos(n):
   for l in n:
#Aqui debe ir mi operacion
       
       print l
r=raw_input('Introduce un numero: ')
print suma_de_digitos(r)


Bueno eso pensado que recorriendo el valor n, no se si este bien de hecho
Título: Re: suma de un entero en pyhon
Publicado por: engel lex en 3 Febrero 2015, 23:12 PM
abre la consola de python y prueba lo sieguiente a ver si entiendes mi operacion

primero
>>> a = 1234
para tener a asignado

>>> a - (a/10) * 10
cuanto da esto?

>>> a = a/10
cuanto da esto?

esas ultimas 2 respuestas del codigo son utiles?

Código (python) [Seleccionar]
def suma_de_digitos(n):
   for l in n:


eso está mal porque int no es un tipo iterable
Título: Re: suma de un entero en pyhon
Publicado por: Joe Fraddy en 3 Febrero 2015, 23:40 PM
Perdona mi ignorancia, pero sigo sin entender, he probado con esto y me da error:

Código (python) [Seleccionar]
def suma_de_digitos(n):
    while n > 0:
        sumador = sumador + n - (n/10) * 10
    print sumador
r=raw_input('Introduce un numero: ')
print suma_de_digitos(r)
Título: Re: suma de un entero en pyhon
Publicado por: engel lex en 3 Febrero 2015, 23:59 PM
ahora aprendamos a leer los errores, que te dice el error?

UnboundLocalError: local variable 'sumador' referenced before assignment

y tu codigo

Código (python) [Seleccionar]
def suma_de_digitos(n):
   while n > 0:
       sumador = sumador + n - (n/10) * 10
   print sumador


lo que basicamente quiere decir es que "sumador" en el while no existe... te lo sacaste del sombrero y la autoreferencias... tienes que declararla fuera del ciclo si quieres que tenga alcance

ahora veamos los otros errores...

error 1
funcion raw_input (https://docs.python.org/2/library/functions.html#raw_input)
CitarIf the prompt argument is present, it is written to standard output without a trailing newline. The function then reads a line from input, converts it to a string (stripping a trailing newline), and returns that.

es decir toma lo que hay y lo entrega como string... pero eso no nos sirve necesitamos que sea tipo int...

funcion input (https://docs.python.org/2/library/functions.html#input)
CitarReturn an integer object constructed from a number or string x, or return 0 if no arguments are given. If x is a number, it can be a plain integer, a long integer, or a floating point number. If x is floating point, the conversion truncates towards zero. If the argument is outside the integer range, the function returns a long object instead.

entrega lo que sea necesario...

entonces cambia raw_input por input

error 2
while va a ser un ciclo infinito (piensa por qué)

error 3
linea 6... vas a imprimir algo de la funcion, pero la funcion no retorna nada, así que imprimirás un "none"

Título: Re: suma de un entero en pyhon[Resuelto]
Publicado por: Joe Fraddy en 5 Febrero 2015, 16:24 PM
Bueno, me he puesto a investigar un poco mas sobre el asunto y he resuelto el problema, seguro hay mas formas de hacerlo, pero este fue el modo en que lo hice yo:

Código (python) [Seleccionar]
def suma_de_digitos(n):
    list=[]
    cont=0
    lst=len(str(n))
    while cont < int(lst):
        list.append(n%10)
        n=n//10
        cont=cont+1
    return sum(list)
w=input("Ingresa un valor entero: ")
print suma_de_digitos(w)


Gracias por sus respuestas, son de gran ayuda!!!
Título: Re: suma de un entero en pyhon [RESUELTO]
Publicado por: fary en 5 Febrero 2015, 16:27 PM
Lo has resuelto de la manera que te explicaron hace dos días, poco habrás tenido que investigar XD