Calcular la media aritmética es una de las operaciones matemáticas más útiles para quienes están aprendiendo programación. En Python, puedes realizar este cálculo utilizando funciones integradas, como sum() y len(), o utilizar el módulo statistics, que ya forma parte de la biblioteca estándar del lenguaje.

En este tutorial aprenderás a calcular la media en Python, organizar el código con funciones, recibir números introducidos por el usuario y gestionar errores comunes. También veremos ejemplos prácticos con calificaciones de estudiantes y gastos mensuales.

¿Qué es la media aritmética?

La media aritmética se calcula sumando todos los valores de un conjunto y dividiendo el resultado entre la cantidad de valores.

Imagina que un estudiante obtuvo las siguientes calificaciones:

notas = [7, 8, 9, 10]

Para calcular la media, primero sumamos las calificaciones:

7 + 8 + 9 + 10 = 34

A continuación, dividimos el total entre la cantidad de calificaciones, que es cuatro:

34 / 4 = 8.5

Por lo tanto, la media aritmética de estas calificaciones es 8.5.

En Python, podemos implementar esta operación de diferentes maneras. Empecemos utilizando dos funciones muy comunes: sum() y len().

Cómo calcular la media usando sum() y len()

Infografía que explica cómo calcular la media en Python utilizando sum() para sumar los números de una lista y len() para contar sus elementos, con un ejemplo de cálculo de la media de 7, 8, 9 y 10, cuyo resultado es 8.5.

Las funciones sum() y len() permiten calcular la media de una lista de números sin tener que sumar cada elemento manualmente.

La función sum() devuelve la suma de los valores de un iterable numérico. Por su parte, len() devuelve la cantidad de elementos de una secuencia, como una lista.

Veamos un ejemplo:

numeros = [7, 8, 9, 10]

total = sum(numeros)
cantidad = len(numeros)

media = total / cantidad

print(f"La media es {media}")

La salida será:

La media es 8.5

Veamos cada parte del código.

  • numeros: almacena los valores en una lista.

  • sum(numeros): suma todos los números y devuelve 34.

  • len(numeros): cuenta los elementos de la lista y devuelve 4.

  • total / cantidad: divide la suma entre la cantidad de valores.

  • print(): muestra el resultado en pantalla.

También podemos escribir el cálculo de forma más compacta:

numeros = [7, 8, 9, 10]

media = sum(numeros) / len(numeros)

print(f"La media es {media}")

Ambas versiones producen el mismo resultado.

Sin embargo, la primera versión hace más explícitos los pasos del cálculo. Para quienes están aprendiendo a organizar el código, utilizar variables como total y cantidad puede facilitar la lectura y la depuración del programa.

Atención: si la lista está vacía, len(numeros) devolverá cero. En ese caso, la división provocará un ZeroDivisionError. Por eso, debemos comprobar que haya valores antes de calcular la media.

Cómo calcular la media usando el módulo statistics

Python también ofrece el módulo statistics, que reúne funciones estadísticas listas para usar.

Para calcular la media aritmética, podemos utilizar statistics.mean().

Veamos el ejemplo:

import statistics

numeros = [7, 8, 9, 10]

media = statistics.mean(numeros)

print(f"La media es {media}")

La salida será:

La media es 8.5

Observa la primera línea:

import statistics

Esta línea importa el módulo que contiene la función responsable del cálculo.

Después, utilizamos:

statistics.mean(numeros)

La función recibe la lista y devuelve la media aritmética de sus valores.

También podemos importar únicamente la función que necesitamos:

from statistics import mean

numeros = [7, 8, 9, 10]

media = mean(numeros)

print(f"La media es {media}")

En este caso, no necesitamos escribir statistics.mean(). Basta con llamar directamente a mean().

¿Qué método utilizar?

Ambos métodos son útiles, pero responden a necesidades ligeramente diferentes.

Método Cuándo utilizarlo
sum() y len() Cuando quieres comprender o implementar directamente el cálculo.
statistics.mean() Cuando quieres utilizar una función preparada para calcular la media.

La función statistics.mean() forma parte de la biblioteca estándar de Python. Por lo tanto, no es necesario instalar bibliotecas externas para utilizarla.

Para conocer los detalles de su funcionamiento, consulta la documentación oficial del módulo statistics.

Cómo calcular la media de una lista de números

Hasta ahora, hemos utilizado listas cuyos valores ya estaban definidos en el código. Sin embargo, en un programa real, los números pueden ser introducidos por el usuario.

Una buena forma de organizar este tipo de operación es crear una función que reciba una lista y devuelva la media calculada.

Veamos una implementación sencilla:

def calcular_media(numeros):
    return sum(numeros) / len(numeros)


notas = [7, 8, 9, 10]

media = calcular_media(notas)

print(f"La media es {media}")

El resultado será:

La media es 8.5

Analicemos la función:

def calcular_media(numeros):
    return sum(numeros) / len(numeros)

La palabra clave def inicia la definición de una función. El parámetro numeros recibe la lista que se utilizará en el cálculo.

La instrucción return devuelve el resultado a la parte del programa que llamó a la función.

Esto permite reutilizar el mismo cálculo con diferentes conjuntos de datos:

notas = [7, 8, 9, 10]
gastos = [100, 150, 200]

print(calcular_media(notas))
print(calcular_media(gastos))

La primera llamada calcula la media de las calificaciones. La segunda calcula la media de los gastos.

No es necesario volver a escribir la función para cada situación. Basta con proporcionar una lista diferente.

Esta separación es importante porque permite reutilizar la lógica del cálculo en distintas partes del programa.

Cómo gestionar listas vacías y valores no válidos

Infografía educativa sobre el manejo de errores en Python, que muestra cómo evitar la división por cero al calcular la media de una lista vacía y cómo utilizar try/except para gestionar entradas no numéricas con float().

Un programa que calcula medias debe contemplar situaciones en las que los datos recibidos no son válidos.

Dos problemas habituales son intentar calcular la media de una lista vacía y recibir texto cuando el programa espera un número.

1. Evitar la división por cero

Considera la siguiente función:

def calcular_media(numeros):
    return sum(numeros) / len(numeros)

Funciona cuando la lista contiene números, pero falla cuando recibe una lista vacía:

numeros = []

media = calcular_media(numeros)

Como la cantidad de elementos es cero, Python no puede realizar la división.

Podemos resolver este problema comprobando la lista antes del cálculo:

def calcular_media(numeros):
    if not numeros:
        raise ValueError("La lista no puede estar vacía.")

    return sum(numeros) / len(numeros)

La expresión if not numeros comprueba si la lista está vacía.

Si lo está, raise ValueError() interrumpe la operación e indica que los datos proporcionados no son adecuados para el cálculo.

Este enfoque resulta útil cuando queremos que la función de cálculo rechace explícitamente una entrada no válida.

2. Convertir las entradas en números

La función input() recibe información introducida por el usuario, pero devuelve una cadena (string), es decir, texto.

Por ejemplo:

numero = input("Introduce un número: ")

Aunque el usuario introduzca 8, el valor recibido será el texto "8".

Para realizar operaciones matemáticas, debemos convertir este texto a un tipo numérico. La función float() permite hacer esta conversión:

numero = float(input("Introduce un número: "))

Así, el valor podrá utilizarse en cálculos con números enteros o decimales.

Sin embargo, si el usuario introduce algo como abc, la conversión provocará un ValueError.

Podemos gestionar este error utilizando try y except:

try:
    numero = float(input("Introduce un número: "))
    print(f"Número introducido: {numero}")

except ValueError:
    print("Entrada no válida. Introduce un número válido.")

El bloque try contiene la operación que puede fallar. Si la conversión genera un ValueError, se ejecutará el bloque except y mostrará un mensaje más claro.

Para profundizar en este tema, consulta la documentación oficial de Python sobre errores y excepciones.

Ejemplos prácticos con calificaciones de estudiantes y gastos mensuales

Ahora que conocemos el cálculo, las funciones y la gestión de errores, podemos aplicar estos conceptos a situaciones cotidianas.

Ejemplo 1: calcular la media de las calificaciones de un estudiante

Imagina un programa que recibe las calificaciones de un estudiante y calcula la media.

Podemos separar la recopilación de datos de la función responsable del cálculo.

def calcular_media(numeros):
    if not numeros:
        raise ValueError("Introduce al menos una calificación.")

    return sum(numeros) / len(numeros)


notas = [7, 8, 9, 10]

media = calcular_media(notas)

print(f"Media del estudiante: {media:.2f}")

La salida será:

Media del estudiante: 8.50

El formato :.2f muestra el resultado con dos decimales.

Esta función puede utilizarse para calcular las medias de diferentes estudiantes sin duplicar la lógica del cálculo.

Ejemplo 2: calcular la media de los gastos mensuales

El mismo razonamiento puede utilizarse para analizar los gastos.

Imagina que una persona registró los siguientes gastos:

gastos = [120.50, 89.90, 150.00]

media = calcular_media(gastos)

print(f"Gasto medio: R$ {media:.2f}")

La salida será:

Gasto medio: R$ 120.13

En este ejemplo, calculamos la media aritmética de tres valores. Esto no significa necesariamente que el resultado represente los gastos de todos los meses del año, sino la media de los valores indicados.

Este ejemplo demuestra cómo una misma función puede reutilizarse en distintos contextos, siempre que los datos sean valores numéricos adecuados para el cálculo.

Cómo organizar el código con funciones separadas

Cuando un programa empieza a recibir datos del usuario, validar entradas y realizar cálculos, colocar todo en un único bloque puede dificultar la comprensión.

Una alternativa es dividir el programa en funciones con responsabilidades específicas.

En este ejemplo utilizaremos tres funciones:

  • coletar_numeros(): solicita la cantidad de números y recibe los valores.

  • calcular_media(): comprueba la lista y calcula la media.

  • main(): coordina la ejecución y muestra el resultado.

Veamos el programa completo:

def coletar_numeros():
    while True:
        try:
            quantidade = int(
                input("¿Cuántos números deseas introducir? ")
            )

            if quantidade <= 0:
                print("Introduce una cantidad mayor que cero.")
                continue

            break

        except ValueError:
            print("Introduce una cantidad entera válida.")

    numeros = []

    for i in range(quantidade):
        while True:
            try:
                numero = float(
                    input(f"Introduce el número {i + 1}: ")
                )

                numeros.append(numero)
                break

            except ValueError:
                print("Entrada no válida. Introduce un número válido.")

    return numeros


def calcular_media(numeros):
    if not numeros:
        raise ValueError("La lista no puede estar vacía.")

    return sum(numeros) / len(numeros)


def main():
    numeros = coletar_numeros()
    media = calcular_media(numeros)

    print(f"La media de los números es {media:.2f}")


if __name__ == "__main__":
    main()

¿Cómo funciona este programa?

1. La función coletar_numeros() recibe la cantidad de valores.

La instrucción input() solicita la cantidad de números, e int() convierte la entrada en un número entero.

El bloque try/except gestiona las entradas que no pueden convertirse en enteros. La condición quantidade <= 0 impide que el programa continúe con una cantidad no válida.

2. El programa solicita cada número.

El bucle for repite la solicitud tantas veces como se haya indicado.

Cada entrada se convierte con float() y se añade a la lista mediante append(). Si el usuario introduce un valor no válido, el programa muestra un mensaje y vuelve a solicitar el mismo número.

3. La función calcular_media() realiza el cálculo.

Esta función recibe la lista completa y comprueba si está vacía antes de realizar la división.

La recopilación de datos queda separada de la regla matemática, lo que facilita la reutilización y el mantenimiento del código.

4. La función main() organiza la ejecución.

La función principal llama primero a la recopilación de números y después al cálculo de la media.

Esta organización facilita identificar dónde se realiza cada tarea.

5. El bloque de ejecución protege la llamada principal.

La condición:

if __name__ == "__main__":
    main()

hace que main() se ejecute cuando el archivo se inicia directamente. También facilita importar las funciones en otro archivo sin ejecutar automáticamente el programa principal.

¿Cómo se ve la ejecución?

Una ejecución posible sería:

¿Cuántos números deseas introducir? 3
Introduce el número 1: 7
Introduce el número 2: 8
Introduce el número 3: 9
La media de los números es 8.00

El programa recibe los valores, los almacena en una lista y calcula la media.

Este es un ejemplo de cómo organizar un código que ya realiza una operación matemática en una estructura más clara, reutilizable y fácil de ampliar.

Conclusión

Calcular la media en Python es una buena oportunidad para practicar listas, funciones, variables y gestión de errores.

Con sum() y len(), puedes implementar el cálculo directamente. Con statistics.mean(), puedes utilizar una función preparada de la biblioteca estándar.

Al recibir números con input(), es importante convertir los valores a un tipo numérico y gestionar las entradas no válidas. También es necesario impedir que el cálculo se ejecute con una lista vacía.

Más allá de conocer la fórmula, aprender a separar la recopilación de datos, el cálculo y la ejecución del programa ayuda a crear código mejor organizado y más fácil de mantener.

¿Quieres aprender a organizar mejor tus programas y reutilizar funciones? Sigue aprendiendo con nuestro tutorial sobre Funciones en Python: ejemplos.