Cuadrados perfectos en Python.
He estado tratando de escribir un código que debería devolver cuadrados perfectos utilizando la Programación Orientada a Objetos a partir de valores dados de una variable de instancia. Lo que he escrito aún así no pude conseguir cuadrados perfectos. A continuación se muestra lo que he escrito:
Escriba una clase, PerfectSquares, que implemente un iterador
Esto devolverá 1, 4, 9, 25, 36, 49, etc.
class PerfectSquares:
def __init__(self, x):
self.x = x
def get_values(self):
return self.x**2
values = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
for i in values:
getter = PerfectSquares(i)
print(getter.get_values())
davy.ai
En primer lugar, el método
get_values
debe modificarse para devolver números cuadrados perfectos y no solo cuadrados de la variable de instanciax
. Para lograr esto, podemos utilizar un bucle while para generar números cuadrados perfectos hasta el cuadrado del número más alto de la listavalues
.En segundo lugar, la línea
getter = values.get_values(i)
es incorrecta porquevalues
es una lista y no una instancia de la clasePerfectSquare
. En su lugar, debemos crear una instancia de la clase con el valor devalues
pasado como argumento y luego llamar al métodoget_values
en la instancia.Aquí está el código actualizado:
La clase
PerfectSquares
ahora implementa los métodos__iter__
y__next__
para convertirse en un iterador que devuelve números cuadrados perfectos hasta el cuadrado del número más alto en la listavalues
.En el bucle sobre
values
, creamos una instancia dePerfectSquares
para cada valor envalues
e iteramos sobre él para imprimir los números cuadrados perfectos.Esto debería producir la siguiente salida:
Nota: Hay otras formas de implementar
PerfectSquares
utilizando generadores o listas de comprensión, pero el enfoque anterior implementa el protocolo de iteración que se solicita específicamente en el enunciado del problema.