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
con un ciclo lo resuelves...
el sumador lo haces
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
No entendí mucho, el caso es que lo que tengo de código es esto:
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
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?
def suma_de_digitos(n):
for l in n:
eso está mal porque int no es un tipo iterable
Perdona mi ignorancia, pero sigo sin entender, he probado con esto y me da error:
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)
ahora aprendamos a leer los errores, que te dice el error?
UnboundLocalError: local variable 'sumador' referenced before assignment
y tu codigo
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 1funcion 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 2while va a ser un ciclo infinito (piensa por qué)
error 3linea 6... vas a imprimir algo de la funcion, pero la funcion no retorna nada, así que imprimirás un "none"
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:
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!!!
Lo has resuelto de la manera que te explicaron hace dos días, poco habrás tenido que investigar XD