Más repaso while

# =============================================================================
# CALCULAR LA MEDIA DE UNA SERIE DE NÚMEROS
# =============================================================================
# Este programa pide números al usuario uno a uno y los va sumando.
# Cuando el usuario introduce un 0, el programa para y calcula la media.
#
# La media es la suma de todos los números dividida entre cuántos hay.
# Ejemplo: si introduces 4, 8 y 6 → media = (4+8+6) / 3 = 6.0
#
# Interacción esperada:
#   Digite un numero: 4
#   Digite un numero: 8
#   Digite un numero: 6
#   Digite un numero: 0   ← el 0 para el bucle, no se suma
#   6.0
# =============================================================================


def calcular_media():
    # Definimos la función. No recibe parámetros porque los datos
    # los pedirá ella misma al usuario con input().
    # Devolverá un número decimal (float) con la media calculada.

    numero = float(input("Digite un numero: "))
    # Pedimos el PRIMER número antes del bucle.
    # Necesitamos hacerlo aquí para poder comprobar la condición del while.
    # float() convierte el texto que escribe el usuario a número decimal.
    # Usamos float en lugar de int para aceptar números como 3.5 o 7.8.
    # PRUEBA: cambia float() por int() e intenta introducir 3.5 para ver el error.

    suma = 0
    # Variable acumuladora: irá sumando todos los números que introduzca el usuario.
    # Siempre se inicializa a 0 antes del bucle.
    # Ejemplo paso a paso con 4, 8, 6:
    #   Antes del bucle: suma = 0
    #   Tras el 4:       suma = 4
    #   Tras el 8:       suma = 12
    #   Tras el 6:       suma = 18

    contador = 0
    # Variable contadora: cuenta cuántos números ha introducido el usuario.
    # También se inicializa a 0. La necesitamos para dividir al calcular la media.
    # Ejemplo: con 4, 8 y 6 → contador llegará a 3.
    # ¡IMPORTANTE! El 0 final NO se cuenta porque para el bucle antes de sumarlo.

    while numero != 0:
        # El bucle se repite MIENTRAS el número introducido sea distinto de 0.
        # En cuanto el usuario escribe 0, el bucle termina sin sumar ni contar ese 0.
        # "!=" significa "distinto de".
        # ALTERNATIVA equivalente: while not numero == 0:

        # ↓ Aquí estaba el comentario "????" en el código original.
        # Lo que hace este bloque es acumular el número en la suma
        # y aumentar el contador en 1 por cada número válido introducido.

        suma = suma + numero
        # Añadimos el número actual a la suma acumulada.
        # Es lo mismo que escribir: suma += numero
        # Solo llegamos aquí si numero != 0, así que el 0 nunca se suma.

        contador = contador + 1
        # Contamos este número como válido.
        # Es lo mismo que escribir: contador += 1

        numero = float(input("Digite un numero: "))
        # Pedimos el SIGUIENTE número al final del bucle.
        # Esto sobreescribe el valor anterior de "numero".
        # En la próxima comprobación del while se usará este nuevo valor.
        # Si el usuario escribe 0 aquí, el while parará en su próxima vuelta.

    # Cuando llegamos aquí, el bucle ya ha terminado.
    # En este punto sabemos que:
    #   - "suma" tiene la suma de todos los números introducidos (sin el 0)
    #   - "contador" tiene cuántos números se introdujeron (sin el 0)

    return suma / contador
    # Calculamos y devolvemos la media: suma total dividida entre cuántos números hay.
    # CUIDADO: si el usuario introduce 0 como primer número, contador valdrá 0
    # y dividir entre 0 causará un error (ZeroDivisionError).
    # MEJORA para evitar ese error:
    #   if contador == 0:
    #       return 0
    #   return suma / contador


# =============================================================================
# PROGRAMA PRINCIPAL
# =============================================================================

media = calcular_media()
# Llamamos a la función. Esta ejecuta todo el proceso de pedir números
# y calcular la media. El resultado que devuelve "return" se guarda aquí.

print(media)
# Mostramos la media por pantalla.
# MEJORA para que quede más claro:
#   print(f"La media de los números introducidos es: {media:.2f}")
#   El :.2f muestra solo 2 decimales. Ejemplo: 6.333333 → 6.33

Publicado por

Juan Pablo Fuentes

Formador de programación y bases de datos