domingo, 17 de junio de 2018

Media de n números en Python

Reto: Media de n valores

Calcular la media de n números.




Método 1

El primer while permite preguntar cuántos números desea el usuario utilizar para calcular la media. Si el número es menor que 2 se insiste con la pregunta.
El segundo while permite ir preguntando por los números que compondrán la media.
Se usa la función calcular a la que pasamos dos argumentos. Una lista denominada numeros y la variable x que indica cuántos elementos tiene la lista. La función calcula la media y la devuelve con return.
Finalmente un print nos muestra en pantalla el valor que devuelve la función calcular.

x=0
u=0
numeros=[]
while (x < 2):
  x = int(input('¿Cuántos números quieres?'))
while (u < x):
  z = int(input('Dame un número:'))
  numeros.append(z)
  u+=1
def calcular(numeros,x):
  w= sum(numeros)
  v=w/x
  return(v)
print('Media = ', calcular(numeros,x))


Método 2

Este método es similar al anterior si bien hemos sustituido el segundo while por un for. Otra diferencia con el método anterior radica en que ahora no usamos una función que calcule le media. Lo que hacemos es imprimir directamente la media calculada dentro del print final.
Con el primer input usamos int y con el segundo usamos float. Esto nos permite capturar números decimales para hacer la media, pero cuando preguntamos por cuántos números quiere el usuario tenemos que usar int por ser un número entero.

x = 0
numeros=[]
while (x < 1):
  x = int(input('¿Cuántos números quieres?'))
for i in range(x):
  z = float(input('Dame un número:'))
  numeros.append(z)
print('Media = ', sum(numeros)/x)


Método 3

Calculamos la media utilizando la función media que tiene dos argumentos. Hemos puesto los nombres de los argumentos diferentes a los que se utilizan para llamar a la función. La función se llama con la última línea usando los argumentos numeros y x. La función recoge esos argumentos con los nombres lista y n. Se sabe quién es quién, por el orden. El primer argumento que se llama es el primer argumento de la función y el segundo argumento que se llama es el segundo argumento de la función.
Otra peculiaridad radica en que la función no retorna nada. No existe return. Lo que hace la función es imprimir dentro de ella usando un print que nos da directamente la media.

x=0
numeros=[]
while (x < 1):
  x = int(input('¿Cuántos números quieres?'))
for i in range(x):
  z = float(input('Dame un número:'))
  numeros.append(z)
def media(lista,n):
  print('Media = ', sum(lista)/n)
media(numeros,x)


Método 4

En este caso la función si utiliza un return y por tanto el print se encuentra fuera de la función.

x=0
numeros=[]
while (x < 1):
  x = int(input('¿Cuántos números quieres?'))
for i in range(x):
  z = float(input('Dame un número:'))
  numeros.append(z)
def media(lista,n):
  return(sum(lista)/n)
print('Media = ', media(numeros,x))


Método 5

En los métodos anteriores hemos preguntado siempre sobre cuántos números desea el usuario utilizar para calcular la media. En este caso, lo que hacemos es ir introduciendo números y nos preguntará por el siguiente, hasta que introduzcamos el valor 'n'. En ese momento se detendrá la petición de más números y nos dará la media.
A la pregunta '¿Quieres otro? s/n' podemos contestar pulsando Enter para que nos pida el siguiente valor.

numeros=[]
while True:
  z = float(input('Dame un número:'))
  numeros.append(z)
  r=input('¿Quieres otro? s/n')
  if r=='n':
    break
print(numeros)
print('Media = ', sum(numeros)/len(numeros))


Método 6

El método anterior tenía el inconveniente de que teníamos que pulsar dos veces seguidas Enter, una para validar el número introducido y otra para indicar que deseábamos introducir otro. En este caso, vamos a simplificar este proceso, y por lo tanto lo que haremos es pedir continuamente números, sin hacer preguntas. El proceso se detendrá cuando el valor introducido no sea numérico, o bien pulsemos Enter.

numeros=[]
print('Para salir pulsa cualquier valor no numérico o Enter.')
while True:
  z = input('Dame un número:')
  if z.isnumeric():
    numeros.append(int(z))
  else:
    break
print(numeros)  
if len(numeros)!=0:
  print('Media = ', sum(numeros)/len(numeros))


Método 7

El método anterior tenía el inconveniente de que no funcionaba si introducíamos un valor que siendo numérico tuviera decimales. Es este caso, resolvemos ese inconveniente creando una función que detecta si un valor es numérico de tipo entero (int) o de tipo decimal (float).

numeros=[]
print('Para salir pulsa cualquier valor no numérico o Enter.')
def is_number(s):
  try:
    float(s)
    return True
  except ValueError:
    return False
while True:
  z = input('Dame un número:')
  if is_number(z):
    numeros.append(float(z))
  else:
    break
print(numeros)  
if len(numeros)!=0:
  print('Media = ', sum(numeros)/len(numeros))

3 comentarios:

  1. #Calcular la media de n números.

    z = int(input("Digite numeros: "))
    c = 1
    x = 0
    while c <= z:
    suma = float(input("Digite un numero: "))
    x = suma + x
    print(x)
    c+=1
    print("media= ",x/z)

    ResponderEliminar
  2. # • Calcular la media de N valores.
    lista=[]
    x='1'

    while x=='SI' or x=='1':
    n=int(input('introduzca un numero por favor: '))
    lista.append(n)
    x=input('¿Desea continuar introduciendo numeros?\n1: Si.\n2: No.').upper()

    print(f'La media entre los numeros {str(lista)[1:-1]} es: {sum(lista)/2}')

    ResponderEliminar
  3. def media():

    numeros = []
    sum = 0
    while True:

    c = int(input('escribe la cantidad de numeros: '))

    for n in range(c):
    num = int(input('escribe los numeros: '))
    numeros.append(num)

    for i in numeros:
    sum = sum + num
    media = sum / len(numeros)
    print(media)

    break

    media()

    ResponderEliminar