La biblioteca estándar de Python incluye un conjunto de módulos que agregan funciones especiales al lenguaje.
La referencia de los módulos disponibles en la biblioteca estándar de Python3 se puede encontrar en:
Los módulos se importan mediante la instrucción import
, de varias maneras posibles.
# el módulo time provee varias funciones relacionadas
# con el tiempo cronométrico y el reloj
from time import ctime
# la función ctime() devuelve la fecha completa
# indicada por el reloj del sistema
fecha = ctime()
print(fecha)
Una vez que se importó un módulo, se puede obtener información sobre el mismo mediante la función help()
:
help(modulo)
También se puede obtener información sobre una función específica del módulo:
help(modulo.funcion)
La referencia de los módulos disponibles se puede encontrar en:
math
¶El módulo math agrega un conjunto de funciones matemáticas (log, factorial, sqrt, funciones trigonométricas, etc), así como también algunas constantes tales como pi o e [ https://docs.python.org/3/library/math.html ].
import math
print("raíz cuadrada de 2:", math.sqrt(2))
print("factorial de 12:", math.factorial(12))
print("3/2 expresado en cents:", 1200 * math.log(3/2, 2))
print("valor de la constante π:", math.pi)
print("seno de π/2:", math.sin(math.pi/2))
random
¶Otro módulo numérico es random, que incluye un conjunto de funciones para la generación de números pseudo-aleatorios de distintas características [ https://docs.python.org/3/library/random.html ].
El módulo random
tiene funciones para operar sobre números enteros, sobre números de coma flotante, y sobre secuencias.
La función puede invocarse con uno, dos, o tres argumentos:
y devuelve un entero aleatorio dentro del rango definido.
Los argumentos se comportan como en la función range():
- con un único argumento, la función devuelve un entero aleatorio entre 0 y stop-1
- con dos argumentos, devuelve un entero aleatorio entre start y stop-1
- el tercer argumento opcional determina el incremento.
import random
print(random.randrange(10))
print(random.randrange(10, 20))
print(random.randrange(50, 100, 5))
La función se invoca:
y devuelve un número entero aleatorio N tal que a <= N <= b.
Es equivalente a randrange(a, b+1).
import random
print(random.randint(10, 20))
El módulo random dispone de una serie de funciones que generan números pseudo-aleatorios de diferentes distribuciones.
Algunas de las más importantes son:
Devuelve un número aleatorio de coma flotante (con distribución uniforme) en el rango [0.0, 1.0)
La función se invoca:
y devuelve un número aleatorio de coma flotante (con distribución uniforme) en el rango [a, b]
La función se invoca:
Devuelve un número aleatorio de coma flotante con distribución triangular en el rango [low, high], que por defecto valen 0 y 1 respectivamente.
El argumento *mode* por defecto es el valor intermedio entre *low* y *high*, generando así una distribución simétrica.
import random
# crea una lista invocando 50 veces la función random.triangular()
# por defecto: low = 0, high = 1, mode = 0.5
triangular_simetrica = [round(random.triangular(), 2) for i in range(50)]
print(triangular_simetrica)
triangular_simetrica.sort()
print(triangular_simetrica)
# distribución asimétrica com mode = 0.9
triangular_asimetrica = [round(random.triangular(0, 1, 0.9), 2) for i in range(50)]
print(triangular_asimetrica)
triangular_asimetrica.sort()
print(triangular_asimetrica)
La función se invoca:
y devuelve un número aleatorio de coma flotante con distribución gaussiana (distribución normal), de media mu y desviación estándar sigma.
La función se invoca:
random.choice(*secuencia*)y devuelve un elemento aleatorio de la secuencia.
import random
lista = ["foo", 17, "bar", 23, "hola"]
cadena = "asldkfjowerldjf"
print(random.choice(lista))
print(random.choice(cadena))
La función se invoca:
random.shuffle(*secuencia*)Reordena aleatoriamente los elementos de una secuencia.
import random
lista = [x for x in range(10)]
print(lista)
random.shuffle(lista)
print(lista)
Modifica la secuencia en el lugar, y por lo tanto puede operar en listas pero no en cadenas, que son inmutables.
La función se invoca:
random.sample(*secuencia, k*)Devuelve una lista de k elementos elegidos aleatoriamente de secuencia.
Si k == len(secuencia), el resultado es una permutación aleatoria de los elementos de la secuencia. A diferencia de random.shuffle(), la secuencia original no es modificada.
Generar series dodecafónicas aleatorias a partir de una lista ordenada de las doce clases de altura.
import random
# lista ordenada de las 12 clases de altura
k = 12
total_cromatico = [x for x in range(k)]
# se generan permutaciones aleatorias del total cromático
serie1 = random.sample(total_cromatico, k)
serie2 = random.sample(total_cromatico, k)
serie3 = random.sample(total_cromatico, k)
print(total_cromatico)
print(serie1)
print(serie2)
print(serie3)
Como la función opera sobre la secuencia sin modificarla, puede aplicarse tanto a listas como a cadenas de caracteres. Siempre devuelve una lista.
import random
cadena = "asdlkjfh"
print(random.sample(cadena, 3))
print(random.sample(cadena, 6))
Inicializa el generador de números aleatorios.
Si se le pasa un argumento entero, se usa como semilla, garantizando el mismo resultado cada vez que se ejecuta el código.
Si se deja vacío (o se usa un objeto de tipo None), se inicializa con el reloj del sistema
import random
random.seed(1)
print(random.randrange(1000))
print(random.randrange(1000))
random.seed()
print(random.randrange(1000))
print(random.randrange(1000))