es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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)
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Sí, tengo una idea. Aquí está el código modificado para los requisitos de función dados:

    import statistics
    
    def squares(*args):
        av = statistics.mean(args)
        for i in args:
            yield (i-av)**2
    

    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 en av.
    – 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:

    x = squares(1,2,3,4,5) # or any other integers as input
    for i in x:
        print(i)
    

    Salida:

    4.0
    1.0
    0.0
    1.0
    4.0
    

    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.

Comments are closed.