¡Domina las funciones matemáticas con el módulo math de Python!
Para ejecutar Python desde el símbolo del sistema o PowerShell en tu PC, necesitas descargar e instalar Python.
Si aún no lo has hecho, consulta el artículo Instalación de Python y configuración del entorno de desarrollo para instalar Python.
Al crear sitios web o desarrollar aplicaciones, ¿alguna vez te has encontrado con la necesidad de realizar "cálculos un poco complejos"? Por ejemplo, al colocar elementos en forma de círculo o al hacer que el movimiento de una animación se acerque a las leyes de la física. En esos momentos, el módulo math, integrado de forma estándar en Python, es de gran ayuda.
El módulo math proporciona funciones y constantes para realizar fácilmente diversos cálculos matemáticos, como raíces cuadradas, funciones trigonométricas y logaritmos. En este artículo, explicaremos de manera sencilla desde los conceptos básicos hasta ejemplos de aplicación del módulo math, con código que los creadores web pueden copiar y pegar para que funcione de inmediato. ¡Experimenta cómo "funciona" y siente el poder de los cálculos matemáticos!
Conceptos básicos del módulo math
El primer paso para usar el módulo math es importarlo en tu script de Python. Para ello, solo tienes que escribir la línea import math al principio de tu código. Con solo eso, podrás utilizar todas las funciones que ofrece math.
Para empezar, importémoslo y mostremos el número pi (𝜋). En el módulo math, se define como la constante math.pi.
import math
# Mostrar el valor de pi
print(math.pi)
# Salida: 3.141592653589793
Del mismo modo, el número de Napier 𝑒, la base del logaritmo natural, también se puede llamar fácilmente con math.e.
import math
# Mostrar el número de Napier e
print(math.e)
# Salida: 2.718281828459045
Funciones útiles de uso frecuente
El módulo math tiene muchas funciones, pero aquí presentaremos una selección de las más útiles para la creación web y el procesamiento de datos.
Redondeo hacia arriba y hacia abajo: `ceil()` y `floor()`
Al manejar números, a menudo es necesario redondear los decimales hacia arriba o hacia abajo. Por ejemplo, al calcular el número total de páginas en una paginación.
math.ceil(x): Devuelve el entero más pequeño mayor o igual que x (redondeo hacia arriba).math.floor(x): Devuelve el entero más grande menor o igual que x (redondeo hacia abajo).
Es fácil de recordar si piensas en ceil como "techo" (ceiling) y floor como "suelo".
import math
# Redondear hacia arriba
print(math.ceil(3.14))
# Salida: 4
# Redondear hacia abajo
print(math.floor(3.14))
# Salida: 3
Raíz cuadrada: `sqrt()`
Para calcular la raíz cuadrada (root), se utiliza math.sqrt(x). Es útil, por ejemplo, en diseño web para encontrar la longitud de un lado a partir del área de un cuadrado. Ten cuidado, ya que introducir un número negativo como argumento producirá un error.
import math
# Calcular la raíz cuadrada de 9
print(math.sqrt(9))
# Salida: 3.0
# Calcular la raíz cuadrada de 2
print(math.sqrt(2))
# Salida: 1.4142135623730951
Potencia: `pow()`
El cálculo de potencias, como X elevado a Y, se realiza con math.pow(x, y). Al igual que la función pow() de CSS, es útil para calcular curvas de aceleración (easing) para animaciones o para determinar complejas relaciones de escala.
import math
# Calcular 2 elevado a la 3ª potencia
print(math.pow(2, 3))
# Salida: 8.0
# Calcular 5 elevado a la potencia 0.5 (es decir, la raíz cuadrada de 5)
print(math.pow(5, 0.5))
# Salida: 2.23606797749979
Funciones trigonométricas: `sin()`, `cos()`, `tan()` y conversión de ángulos
Las funciones trigonométricas son una herramienta indispensable para expresiones creativas como la disposición circular de elementos, animaciones de ondas y cálculos de ángulos. En el módulo math de Python, se pueden usar sin(), cos(), tan(), etc.
【IMPORTANTE】 Las funciones trigonométricas del módulo math toman como argumento radianes (radian). Ten cuidado, ya que no son los "grados (degree)" que usamos normalmente. Pero no te preocupes. También se proporcionan funciones útiles para convertir entre grados y radianes.
math.radians(d): Convierte el ángulo d de grados a radianes.math.degrees(r): Convierte el ángulo r de radianes a grados.
Por ejemplo, calculemos el seno (sin) de 45 grados.
import math
# Convertir 45 grados a radianes
angle_rad = math.radians(45)
print(f"45 grados = {angle_rad} radianes")
# Calcular sin(45 grados)
sin_value = math.sin(angle_rad)
print(f"sin(45 grados) = {sin_value}")
# sin(45 grados) es 1/√2, por lo que es aproximadamente 0.707
# Salida:
# 45 grados = 0.7853981633974483 radianes
# sin(45 grados) = 0.7071067811865476
Ejemplos de aplicación práctica
A continuación, combinemos las funciones que hemos aprendido hasta ahora para realizar cálculos más prácticos.
Ejemplo de aplicación 1: Calcular el área y la circunferencia de un círculo
Este es un programa que calcula el área y la longitud de la circunferencia de un círculo con un radio de 5. El área se calcula como "radio × radio × pi", y la circunferencia como "diámetro × pi".
import math
radius = 5 # Radio
# Calcular el área (π * r^2)
area = math.pi * math.pow(radius, 2)
# Calcular la circunferencia (2 * π * r)
circumference = 2 * math.pi * radius
print(f"Círculo de radio {radius}:")
print(f" Área: {area}")
print(f" Circunferencia: {circumference}")
# Salida:
# Círculo de radio 5:
# Área: 78.53981633974483
# Circunferencia: 31.41592653589793
Ejemplo de aplicación 2: Calcular la distancia entre dos puntos (Teorema de Pitágoras)
Cuando se conocen las coordenadas de dos elementos en una página web (punto A y punto B), se calcula la distancia en línea recta entre ellos. Esto se puede obtener usando el teorema de Pitágoras $c = \sqrt{a^2 + b^2}$. Las funciones sqrt() y pow() del módulo math son muy útiles aquí.
A partir de Python 3.8, también se ha añadido una función dedicada para este cálculo exacto, llamada math.dist().
import math
# Coordenadas de los puntos A y B
p1 = (10, 20) # (x1, y1)
p2 = (50, 80) # (x2, y2)
# Calcular la diferencia en x e y
dx = p2[0] - p1[0]
dy = p2[1] - p1[1]
# Calcular la distancia con el teorema de Pitágoras
# distance = sqrt(dx^2 + dy^2)
distance = math.sqrt(math.pow(dx, 2) + math.pow(dy, 2))
print(f"La distancia entre {p1} y {p2} es: {distance}")
# En Python 3.8 o superior, se puede hacer de una vez con math.dist()
# distance_alt = math.dist(p1, p2)
# print(f"Usando math.dist(): {distance_alt}")
# Salida:
# La distancia entre (10, 20) y (50, 80) es: 72.11102550927978
【¡Pruébalo!】Generar un archivo HTML con Python
Hasta ahora, el código que hemos visto solo mostraba los resultados en la terminal (la pantalla negra). Como creador web, seguramente sientes esa emoción de "¡funciona!" cuando lo ves en un navegador.
En el siguiente ejemplo, te mostraremos cómo generar dinámicamente un archivo HTML usando Python. Es un script que calcula los números del 1 al 10 y sus raíces cuadradas, y luego exporta el resultado como una tabla en un archivo HTML.
Guarda el siguiente código de Python con un nombre como generate_html.py y ejecútalo. Debería generarse un archivo llamado math_table.html en la misma carpeta.
<!-- Código Python: generate_html.py -->
import math
# Parte inicial del HTML
html_content = """
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Tabla de Raíces Cuadradas</title>
<style>
body { font-family: sans-serif; background-color: #121212; color: #e0e0e0; display: grid; place-items: center; min-height: 100vh; margin: 0; }
table { border-collapse: collapse; width: 80%; max-width: 400px; box-shadow: 0 4px 10px rgba(0,0,0,0.5); }
th, td { border: 1px solid #5f6368; padding: 12px; text-align: center; }
thead { background-color: #669df6; color: #121212; }
tbody tr:nth-child(odd) { background-color: #1e1e1e; }
</style>
</head>
<body>
<table>
<thead>
<tr>
<th>Número</th>
<th>Raíz Cuadrada</th>
</tr>
</thead>
<tbody>
"""
# Bucle para generar las filas de la tabla del 1 al 10
for i in range(1, 11):
sqrt_value = math.sqrt(i)
html_content += f" <tr>\n"
html_content += f" <td>{i}</td>\n"
html_content += f" <td>{sqrt_value:.4f}</td>\n" # Formatear a 4 decimales
html_content += f" </tr>\n"
# Parte final del HTML
html_content += """
</tbody>
</table>
</body>
</html>
"""
# Escribir en el archivo HTML
with open("math_table.html", "w", encoding="utf-8") as f:
f.write(html_content)
print("¡Se ha generado math_table.html!")
Y aquí está el contenido del archivo math_table.html que genera el script. Si abres este archivo HTML en un navegador, verás una tabla bien formateada. ¡Este es el momento en que el poder de cálculo de Python y la tecnología web se fusionan!
<!-- HTML generado: math_table.html -->
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Tabla de Raíces Cuadradas</title>
<style>
body { font-family: sans-serif; background-color: #121212; color: #e0e0e0; display: grid; place-items: center; min-height: 100vh; margin: 0; }
table { border-collapse: collapse; width: 80%; max-width: 400px; box-shadow: 0 4px 10px rgba(0,0,0,0.5); }
th, td { border: 1px solid #5f6368; padding: 12px; text-align: center; }
thead { background-color: #669df6; color: #121212; }
tbody tr:nth-child(odd) { background-color: #1e1e1e; }
</style>
</head>
<body>
<table>
<thead>
<tr>
<th>Número</th>
<th>Raíz Cuadrada</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>1.0000</td>
</tr>
<tr>
<td>2</td>
<td>1.4142</td>
</tr>
<tr>
<td>3</td>
<td>1.7321</td>
</tr>
<tr>
<td>4</td>
<td>2.0000</td>
</tr>
<tr>
<td>5</td>
<td>2.2361</td>
</tr>
<tr>
<td>6</td>
<td>2.4495</td>
</tr>
<tr>
<td>7</td>
<td>2.6458</td>
</tr>
<tr>
<td>8</td>
<td>2.8284</td>
</tr>
<tr>
<td>9</td>
<td>3.0000</td>
</tr>
<tr>
<td>10</td>
<td>3.1623</td>
</tr>
</tbody>
</table>
</body>
</html>
Puntos a tener en cuenta
El módulo math es muy potente, pero hay algunos puntos a tener en cuenta.
- No olvides
import math: Es la base de todo. Si lo olvidas, obtendrás un errorNameError: name 'math' is not defined. - La mayoría de las funciones devuelven un número de punto flotante (float): Al igual que el resultado de
math.sqrt(9)es3.0y no3, muchas funciones devuelven un tipo float en lugar de un entero. Es importante ser consciente del tipo de dato para evitar comportamientos inesperados. - Error de dominio (Domain Error): Obtendrás un error si intentas realizar un cálculo matemáticamente imposible. Por ejemplo, intentar calcular la raíz cuadrada de un número negativo generará un
ValueError: math domain error. Acostúmbrate a verificar los valores de entrada.
import math
try:
# Si intentas calcular la raíz cuadrada de un número negativo...
result = math.sqrt(-1)
except ValueError as e:
# ¡Se produce un error!
print(f"Se ha producido un error: {e}")
# Salida:
# Se ha producido un error: math domain error
Resumen
En este artículo, hemos explorado cómo usar el módulo math de Python, desde cálculos matemáticos básicos y funciones trigonométricas hasta cómo exportar los resultados como HTML. Dominar el módulo math no solo te permite automatizar cálculos que antes hacías a mano o con una calculadora, sino que también abre la puerta a implementar funciones más avanzadas e interactivas en tus sitios web y aplicaciones.
Empieza por copiar, pegar y ejecutar el código de este artículo. Una vez que te acostumbres, intenta experimentar con tus propios cálculos y expresiones. ¡Combina tu creatividad con el poder de cálculo de Python para dar vida a nuevas ideas!
Siguientes pasos
Después de los cálculos matemáticos, ¿por qué no pruebas a crear movimiento y variaciones usando valores aleatorios? El siguiente artículo explica cómo usar el módulo random para generar valores impredecibles, como el lanzamiento de un dado.