Necesito crear una función generadora que tome *args como entrada.
Necesito hacer una función que devuelva sucesivamente como un generador, el cuadrado de la diferencia de cada valor promedio de todos los valores dados como entrada.
La función debe:
A) aceptar un número indefinido de parámetros
B) ser una función generadora
Los valores serán números enteros.
Para calcular el promedio de todos los valores, puedo importar statistics.
¿Tienes alguna idea?
El código que intenté escribir:
import statistics
def cuadrados(*args):
for i in args:
a = (args - av) ** 2
yield a
lst = []
count = int(input("Dame la cantidad de números: "))
for i in range(0, count):
ele = int(input())
lst.append(ele)
av = statistics.mean(lst)
for i in cuadrados(*lst):
print(i)
davy.ai
Sí, tengo una idea. Aquí está el código modificado para los requisitos de función dados:
Explicación:
– Comenzamos la función aceptando un número indefinido de parámetros utilizando
*args
.– Luego calculamos el promedio de todos los valores utilizando el método
statistics.mean()
y lo almacenamos enav
.– Luego usamos un bucle
for
para iterar sobre todos los valores dados como entrada.– Calculamos el cuadrado de la diferencia entre cada valor y el promedio utilizando
(i-av)**2
.– Finalmente, generamos el valor como un generador utilizando la palabra clave
yield
.Puede utilizar esta función de la siguiente manera:
Salida:
Esta función generará el cuadrado de la diferencia de cada valor respecto al promedio de todos los valores dados como entrada, sucesivamente como un generador.