Autor Tema: Programa de varianza y media en python a nivel muy basico.

0 Usuarios y 1 Visitante están viendo este tema.

09 Diciembre, 2012, 08:41 pm
Leído 1577 veces

Jano

  • $$\Large \color{#5372a0}\pi\,\pi$$
  • Mensajes: 70
  • Karma: +0/-0
  • Sexo: Masculino
El ejercicio que me piden consiste en hacer un programa que reciba una sucesión arbitraria de números introducidos por el teclado (la sucesion debe acabar con un 0), y esos números no pueden ser almacenados en una lista (no se muy bien que quiere decir el ejercicio con esa afirmación). Calcular la varianza de todos esos datos. Nota: seguro que pensando un poco y con un poco de aritmética básica puedes sacar alguna forma de calcular la media y la varianza de una sola pasada (la media se necesita para calcular la varianza). Si alguien puede mostrarme el programa y explicarmelo o bien darme alguna orientación estaría muy agradecido. Pertenece al tema de bucles pero no consigo resolverlo.

10 Diciembre, 2012, 10:24 am
Respuesta #1

Luis Fuentes

  • el_manco
  • Administrador
  • Mensajes: 58,907
  • País: es
  • Karma: +0/-0
Hola

 No se programar en Python. Pero en pseudocódigo sería algo así:

 n=0
 suma=0
 suma2=0
 dato=1
 mientras{dato\( \neq \) 0}
   pide dato
   si dato\( \neq \) 0
      n=n+1
      suma=suma+dato
      suma2=suma2+dato^2
   fin si
 fin mientras
 si n=0
    imprime "No ha introducido ningún dato"
 en otro caso
    media=suma/n
    varianza=suma2/n-media^2
    imprime "Media=",media," Varianza=",varianza
 fin si

Saludos.

10 Diciembre, 2012, 11:05 am
Respuesta #2

mentortecnico

  • $$\Large \color{#6a84c0}\pi$$
  • Mensajes: 5
  • Karma: +0/-0
  • Sexo: Masculino
    • Mentor Técnico. Ayuda con matemáticas.
Buenas,

ten aquí una implementación ligeramente modificada del algorithmo de el_manco. En mi caso te muestra por pantalla los resultados a cada número introducido.

print "Introduce un numero y pulsa ENTER. Cuando escribas un 0 se acabara la ejecucion"

n=0
suma=0
suma2=0

dato = int(raw_input(""))

while dato!=0:
    n+=1
    suma+=dato
    suma2+=dato**2
    media = float(suma)/n   # Ojo con el float(), si no 1/2 daria 0!
    varianza = float(suma2)/n-media**2
    print "\t\tMedia: ",media
    print "\t\tVarianza: ",varianza
    dato = int(raw_input(""))

11 Diciembre, 2012, 08:20 pm
Respuesta #3

Jano

  • $$\Large \color{#5372a0}\pi\,\pi$$
  • Mensajes: 70
  • Karma: +0/-0
  • Sexo: Masculino
Muchísimas gracias a los dos, me ha servido de mucho saber hacer ese programa y de dos formas distintas. Saludos.