Calcular los divisores de un numero con iteradores
Publicado por Candela (9 intervenciones) el 06/03/2021 12:32:33
Buenas! He empezado el tema de iteradores y hay un ejercicio que parece que se me esta resistiendo.
A partir de dicho código tengo que completar la clase Divisors para convertirla en un iterador que devuelva, uno por uno y en orden ascendente, todos los divisores de un número entero positivo.
Yo he intentado tirar por este camino
Pero me da un bucle infinito y no consigo encontrar la forma de resolverlo.
El resultado sería el siguiente:
Output:
1
2
3
4
6
12
Agradezco cualquier tipo d ayuda o pista!!!
1
2
3
4
5
6
7
8
9
10
11
class Divisors:
"""iterator: Returns, one at a time, the Divisors os a positive integer"""
def __init__(self, number):
"""Set number to get its Divisors
raise ValueError is number is not a positve integer
"""
if type(number) == int and number > 0:
self.__number = number
else:
raise ValueError("Initalization parameter must be a positive integer")
A partir de dicho código tengo que completar la clase Divisors para convertirla en un iterador que devuelva, uno por uno y en orden ascendente, todos los divisores de un número entero positivo.
Yo he intentado tirar por este camino
1
2
3
4
5
6
7
8
9
10
11
12
13
def __iter__(self):
self.current = 1
self.stop = self.__number
return self
def __next__(self):
if self.current <= self.__number:
if self.__number % self.current == 0:
return (self.current)
self.current += 1
else:
raise StopIteration
Pero me da un bucle infinito y no consigo encontrar la forma de resolverlo.
El resultado sería el siguiente:
1
2
f i in Divisors(12):
print(i)
Output:
1
2
3
4
6
12
Agradezco cualquier tipo d ayuda o pista!!!
Valora esta pregunta
0