Python - Funcion que retorne el promedio de los números de una lista

 
Vista:
sin imagen de perfil

Funcion que retorne el promedio de los números de una lista

Publicado por Derek León (1 intervención) el 04/12/2020 04:35:34
Buenas tardes, alguien me podría ayudar con el siguiente programa?

Escriba una función de nombre promedio_std(). La función debe recibir una lista de números llamada lista, y debe retornar retornar el promedio de ellos, junto con su desviación estándar.

Hint 1: La desviación estándar corresponde a la raíz de la suma de los cuadrados de las diferencias de cada elemento respecto al promedio, divididos por la cantidad de elementos.

Hint 2: Recuerda que puedes retornar dos valores x e y utilizando la notación

Por el momento tengo esto pero no me da los resultados correctos.

1
2
3
4
5
6
7
8
9
10
11
12
def promedio_std(lista):
  x = 0
  y = 0
  suma = 0
  media = sum(lista) / len(lista)
  total = 0.0
  for i in lista:
    suma = suma + i
    total = total + (i - media) ** 2
    y = (total) ** 0.5
    x = suma / len(lista)
    return (x, y)

La lista de números que me dan es: 46, 21, 47, 46, 58, 34, 64, 46, 8, 50, 67, 14, 85, 73, 67, 43, 89, 30, 67, 82.
El codigo debe entregar 51.85 y 22.384 pero en su lugar me entrega otros valores :(
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
sin imagen de perfil
Val: 2.808
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Funcion que retorne el promedio de los números de una lista

Publicado por tincopasan (1082 intervenciones) el 04/12/2020 07:12:04
hace muchos años que no veo estos ejercicios, pero en base a tu código lo haría así:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#-*- coding: utf - 8 -*-
lista=[46, 21, 47, 46, 58, 34, 64, 46, 8, 50, 67, 14, 85, 73, 67, 43, 89, 30, 67, 82]
#51.85 y 22.384
#Hint 1: La desviación estándar corresponde a
#la raíz de la suma de los cuadrados de las diferencias de cada elemento respecto al promedio, divididos por la cantidad de elementos.
def promedio_std(lista):
    x = 0
    y = 0
    x = sum(lista) / len(lista)
    total = 0.0
    for i in lista:
        total += round((i - x) ** 2,2)
    y = total / (len(lista) -1)
    y= round(y**(1/2),2)
    return x,y
 
print(promedio_std(lista))

estoy seguro que el procedimiento era así, pero por alguna razón no coincide la desviación, ya que da como salida:
(51.85, 22.97)

si tenés otros ejercicios resueltos verifica que si funciona la función, o eso creo.
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

Funcion que retorne el promedio de los números de una lista

Publicado por Roberto (1 intervención) el 09/04/2021 21:58:55
Al momento de calcular la desviación, el tamaño es len(lista), sobra el -1

Quedaría así:

1
2
3
4
5
6
7
8
9
10
def promedio_std(lista):
    x = 0
    y = 0
    x = sum(lista) / len(lista)
    total = 0.0
    for i in lista:
        total += round((i - x) ** 2,2)
    y = total / (len(lista))
    y= round(y**(1/2),2)
    return x,y
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

Funcion que retorne el promedio de los números de una lista

Publicado por Juan Sebastian Londoño (2 intervenciones) el 30/10/2021 18:40:07
Oye como hago para que este mismo código me imprima pero sin redondear, lo necesito para finalizar un curso, ayuda por favor :(
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: 75
Ha disminuido su posición en 2 puestos en Python (en relación al último mes)
Gráfica de Python

Funcion que retorne el promedio de los números de una lista

Publicado por Miguel (25 intervenciones) el 30/10/2021 18:41:35
Estas finalizando un curso y ni siquiera sabes hacer una funcion matematica, mmmhhh esfuerzate un poco
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

Funcion que retorne el promedio de los números de una lista

Publicado por Juan Sebastian Londoño (2 intervenciones) el 30/10/2021 18:53:02
:(, es que sucede que el resultado que necesito me sale redondeado solo quiero saber como hago para que el resultado(mas que todo la Y) me de como resultado el numero completo no redondeado, Ayuda por favor
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

Funcion que retorne el promedio de los números de una lista

Publicado por Julio Cesar Rodriguez (1 intervención) el 12/01/2022 13:30:36
Este es el código corregido, tenias un error en la linea 13, no es necesario el -1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
lista = [77, 87, 99, 69, 48, 58, 48, 81, 65, 58, 35, 16, 42, 98, 2, 61]
 
 
def promedio_std(lista):
    x = 0
    y = 0
    x = sum(lista) / len(lista)
    total=0.0
    for i in lista:
        total += round((i - x) ** 2,3)
    y = total / (len(lista))
    y= round(y**(1/2),3)
 
    return x,y
 
print(promedio_std(lista))

Saludos!
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

Funcion que retorne el promedio de los números de una lista

Publicado por andres (1 intervención) el 07/10/2022 23:28:41
habia un tema de redondeo en esa prueba , el codigo aprobado es asi

lista = [45, 28, 57, 18, 46, 29, 30, 15, 47, 29, 56, 34, 80, 86, 17, 58, 4, 100]
def promedio_std(lista):
x = 0
y = 0
x = round(sum(lista) / len(lista),3)
total = 0.0
for i in lista:
total += round((i - x) ** 2,3)
y = total / (len(lista))
y= round(y**(1/2),3)
return x,y

print(promedio_std(lista))
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

Funcion que retorne el promedio de los números de una lista

Publicado por José Antonio (1 intervención) el 26/11/2022 04:59:22
talvez es por la linea 9
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