Python - AYUDA!! Crear una funcion que me permita calcular la persistencia aditiva

 
Vista:
sin imagen de perfil

AYUDA!! Crear una funcion que me permita calcular la persistencia aditiva

Publicado por Luis Anibal (5 intervenciones) el 29/12/2017 00:34:43
Ayudenme a resolver este problema. Por favor!!


foto
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de algoritmo
Val: 819
Bronce
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

AYUDA!! Crear una funcion que me permita calcular la persistencia aditiva

Publicado por algoritmo (245 intervenciones) el 29/12/2017 17:32:06
Hola Luis.

Lo que pides es la esencia de la 'regla del 9'. https://es.wikipedia.org/wiki/Prueba_del_nueve. Los que tenemos algunos años, lo estudiamos en el cole desde muy pequeños.

¿Porqué no nos dices qué tienes hecho a ver cómo podemos ayudarte?

Un saludo :)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

AYUDA!! Crear una funcion que me permita calcular la persistencia aditiva

Publicado por Luis Anibal (5 intervenciones) el 29/12/2017 21:49:39
Ya llevo tiempo tratando de resolverlo. Si puedes ayudarme con la solucion te lo agradeceria mucho. Parece que tengo un problema en el ciclo
while por que no corre el programa y tampoco sale error, solamente no corre.

ima2
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 156
Ha disminuido 1 puesto en Python (en relación al último mes)
Gráfica de Python

AYUDA!! Crear una funcion que me permita calcular la persistencia aditiva

Publicado por Andrés (55 intervenciones) el 29/12/2017 21:52:42
Bien,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#!/usr/bin/python
# -*- coding: utf-8 -*-
 
def sumar_digitos(numero):
    #vamos a modificar este valor
	n = numero
	#la suma de los digitos
	suma = 0
	#digito
	digito = 0
	#sumar los digitos
	while n > 0:
		digito = n%10
		suma += digito
		n /= 10
 
	return suma
 
def calcular_persistencia_aditiva(numero):
    #cuantas veces hacemos la suma
	contador = 0
	#vamos a modificar el valor original
	n = numero
	#mientras tengamos mas de un digito	
	while not n < 10:
	    #sumar los digitos 
		n = sumar_digitos(n)
		#incrementar el contador
		contador += 1
 
	return contador
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

AYUDA!! Crear una funcion que me permita calcular la persistencia aditiva

Publicado por Luis Anibal (5 intervenciones) el 31/12/2017 05:10:52
Gracias por ayudarme. El codigo funciona hasta la segunda persistencia ya cuando quiero que me calcule un numero de persistencia 3 lo toma como si tuviera persistencia 2, lo revisare a ver si puedo arreglar eso. Igual gracias!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de algoritmo
Val: 819
Bronce
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

AYUDA!! Crear una funcion que me permita calcular la persistencia aditiva

Publicado por algoritmo (245 intervenciones) el 31/12/2017 11:34:31
Fallaba para menores de 10. Sin embargo para mayores creo que va bien. ¿En qué números te falla?

Aquí lo tienes mejorado:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
def calcularPersistenciaAditiva(numero, cont):
    if numero < 10:
        return 'Respuesta: %s' % cont
 
    cont += 1
    lista = []
    numero = str(numero)
    for i in numero:
        lista.append(int(i))
 
    numeronuevo = sum(lista)
    print 'Paso %s: %s --> %s' % (cont, numero, numeronuevo)
    if numeronuevo < 10:
        return 'Respuesta: %s' % cont
    else:
        return calcularPersistenciaAditiva(numeronuevo, cont)
 
print (calcularPersistenciaAditiva(5978, 0))
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 156
Ha disminuido 1 puesto en Python (en relación al último mes)
Gráfica de Python

AYUDA!! Crear una funcion que me permita calcular la persistencia aditiva

Publicado por Andrés (55 intervenciones) el 29/12/2017 18:33:17
En qué necesitas ayuda?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

AYUDA!! Crear una funcion que me permita calcular la persistencia aditiva

Publicado por Luis Anibal (5 intervenciones) el 29/12/2017 21:52:04
Si me puedes ayudar a resolver ese ejercicio seria de gran ayuda. Llevo tiempo tratando de resolverlo.

ima2
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 2.239
Plata
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

AYUDA!! Crear una funcion que me permita calcular la persistencia aditiva

Publicado por xve (1646 intervenciones) el 30/12/2017 01:11:02
Estaria mejor que pegaras el código en vez de una imagen...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de algoritmo
Val: 819
Bronce
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

AYUDA!! Crear una funcion que me permita calcular la persistencia aditiva

Publicado por algoritmo (245 intervenciones) el 30/12/2017 10:48:13
Tu código entra en un bucle infinito cuando el número es mayor de 9.
¿Has probado usar import pdb;pdb.set_trace() como herramienta para parar el programa y realizar un seguimiento paso a paso ?

Puedes utilizar la recursividad:
1 ) Haces una llamada con el contador a cero.
2) Calculas la suma de los dígitos del número
3) Si es mayor de 9 la función se llama a sí misma (recursividad), aumentando el contador.

Espero que te sirva:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
def calcularPersistenciaAditiva(numero, cont):
    cont += 1
    lista = []
    numero = str(numero)
    for i in numero:
        lista.append(int(i))
 
    numeronuevo = sum(lista)
    if numeronuevo < 10:
        return cont
    else:
        return calcularPersistenciaAditiva(numeronuevo, cont)
 
print (calcularPersistenciaAditiva(99999999999, 0))
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil

AYUDA!! Crear una funcion que me permita calcular la persistencia aditiva

Publicado por Luis Anibal (5 intervenciones) el 31/12/2017 05:04:44
Acabo de revisar lo que hiciste. Gracias el codigo funciono!! Tome su voto!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

AYUDA!! Crear una funcion que me permita calcular la persistencia aditiva

Publicado por Kike (1 intervención) el 20/02/2018 05:42:00
KIKEESPOL

En el ejercicio TEMA 1 menciona retornar en si lo realice de esta forma ya que no especifica que lo quiere si el numero final o toda la secuencia ademas que cuando uno realiza return devuelve ya sea algo concreto a diferencia de lo que yo realice.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar