Hola a todos. Bienvenidos a este nuevo vídeo para el canal. Hoy vamos a comenzar con los proyectos en Python. Lo que vamos a hacer hoy es un generador de contraseñas. Será algo básico, pero útil. El programa pedirá al usuario el tamaño de la contraseña y generará una contraseña aleatoria de esa longitud.
Primero, vamos a importar las librerías necesarias. Usaremos las librerías string
y random
. La librería string
nos proporciona conjuntos de caracteres como letras y dígitos, mientras que la librería random
nos permite generar números aleatorios y seleccionar elementos aleatorios de una lista.
import string
import random
La librería string
proporciona varios conjuntos de caracteres que podemos usar para generar contraseñas:
print(string.ascii_letters) # abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
print(string.digits) # 0123456789
print(string.punctuation) # !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
Estos conjuntos incluyen letras mayúsculas y minúsculas, dígitos y caracteres especiales. Si quieres incluir la 'ñ', puedes añadirla manualmente a los conjuntos de caracteres.
A continuación, vamos a crear una función para generar una contraseña. Esta función tomará como parámetro la longitud deseada de la contraseña y devolverá una cadena aleatoria de esa longitud.
def generar_contraseña(longitud):
caracteres = string.ascii_letters + string.digits + string.punctuation
contraseña = ''
for i in range(longitud):
contraseña += random.choice(caracteres)
return contraseña
# Ejemplo de uso
print(generar_contraseña(8))
En este ejemplo, concatenamos todas las letras, dígitos y símbolos en una sola cadena y luego seleccionamos caracteres aleatorios de esa cadena para formar la contraseña.
Ahora vamos a mejorar el programa para que interactúe con el usuario, pidiéndole la longitud de la contraseña deseada:
def generar_contraseña(longitud):
caracteres = string.ascii_letters + string.digits + string.punctuation
contraseña = ''
for i in range(longitud):
contraseña += random.choice(caracteres)
return contraseña
# Pedir al usuario la longitud de la contraseña
longitud = int(input("¿Cuál es la longitud de la contraseña deseada? "))
nueva_contraseña = generar_contraseña(longitud)
print("La nueva contraseña es:", nueva_contraseña)
Con este código, el programa solicitará al usuario que ingrese la longitud de la contraseña y luego generará y mostrará una contraseña de esa longitud.
Si deseas personalizar los caracteres que se utilizan para generar la contraseña, puedes modificar la cadena de caracteres. Por ejemplo, puedes eliminar algunos símbolos que no quieras incluir:
caracteres = string.ascii_letters + string.digits + "!@#$%&*"
Esto hará que el programa solo utilice las letras, los dígitos y los símbolos que especifiques.
A continuación, se muestra el programa completo con todas las mejoras:
import string
import random
def generar_contraseña(longitud):
caracteres = string.ascii_letters + string.digits + string.punctuation
contraseña = ''
for i in range(longitud):
contraseña += random.choice(caracteres)
return contraseña
# Pedir al usuario la longitud de la contraseña
longitud = int(input("¿Cuál es la longitud de la contraseña deseada? "))
nueva_contraseña = generar_contraseña(longitud)
print("La nueva contraseña es:", nueva_contraseña)
Es importante validar la entrada del usuario para asegurarnos de que la longitud de la contraseña sea un número positivo. Podemos añadir esta validación al programa:
def generar_contraseña(longitud):
caracteres = string.ascii_letters + string.digits + string.punctuation
contraseña = ''
for i in range(longitud):
contraseña += random.choice(caracteres)
return contraseña
# Pedir al usuario la longitud de la contraseña
try:
longitud = int(input("¿Cuál es la longitud de la contraseña deseada? "))
if longitud <= 0:
print("La longitud debe ser un número positivo.")
else:
nueva_contraseña = generar_contraseña(longitud)
print("La nueva contraseña es:", nueva_contraseña)
except ValueError:
print("Por favor, ingrese un número válido.")
Con esta mejora, el programa validará que la entrada del usuario sea un número entero positivo.
Podemos garantizar que la contraseña generada contenga al menos un carácter de cada tipo (letra mayúscula, letra minúscula, dígito y símbolo). Para ello, podemos modificar la función generar_contraseña
:
def generar_contraseña(longitud):
if longitud < 4:
return "La longitud debe ser al menos 4 para incluir todos los tipos de caracteres."
caracteres = string.ascii_letters + string.digits + string.punctuation
contraseña = [
random.choice(string.ascii_lowercase),
random.choice(string.ascii_uppercase),
random.choice(string.digits),
random.choice(string.punctuation)
]
for i in range(longitud - 4):
contraseña.append(random.choice(caracteres))
random.shuffle(contraseña)
return ''.join(contraseña)
# Pedir al usuario la longitud de la contraseña
longitud = int(input("¿Cuál es la longitud de la contraseña deseada? "))
if longitud < 4:
print("La longitud debe ser al menos 4.")
else:
nueva_contraseña = generar_contraseña(longitud)
print("La nueva contraseña es:", nueva_contraseña)
Con esta mejora, garantizamos que la contraseña incluya al menos un carácter de cada tipo.
Veamos algunos ejemplos adicionales de cómo generar contraseñas con diferentes configuraciones:
# Generar una contraseña de 12 caracteres
print(generar_contraseña(12))
# Generar una contraseña de 20 caracteres
print(generar_contraseña(20))
# Generar una contraseña con solo letras y dígitos
def generar_contraseña_simple(longitud):
caracteres = string.ascii_letters + string.digits
contraseña = ''.join(random.choice(caracteres) for i in range(longitud))
return contraseña
print(generar_contraseña_simple(12))
En estos ejemplos, mostramos cómo generar contraseñas de diferentes longitudes y cómo generar contraseñas que solo incluyan letras y dígitos.
Podemos añadir una interfaz de usuario básica para el generador de contraseñas usando la biblioteca tkinter
de Python:
import tkinter as tk
from tkinter import messagebox
def generar_contraseña(longitud):
if longitud < 4:
return "La longitud debe ser al menos 4 para incluir todos los tipos de caracteres."
caracteres = string.ascii_letters + string.digits + string.punctuation
contraseña = [
random.choice(string.ascii_lowercase),
random.choice(string.ascii_uppercase),
random.choice(string.digits),
random.choice(string.punctuation)
]
for i in range(longitud - 4):
contraseña.append(random.choice(caracteres))
random.shuffle(contraseña)
return ''.join(contraseña)
def generar():
try:
longitud = int(entry.get())
if longitud < 4:
messagebox.showerror("Error", "La longitud debe ser al menos 4.")
else:
contraseña = generar_contraseña(longitud)
resultado_label.config(text=contraseña)
except ValueError:
messagebox.showerror("Error", "Por favor, ingrese un número válido.")
root = tk.Tk()
root.title("Generador de Contraseñas")
tk.Label(root, text="Longitud de la contraseña:").pack(pady=5)
entry = tk.Entry(root)
entry.pack(pady=5)
tk.Button(root, text="Generar", command=generar).pack(pady=20)
resultado_label = tk.Label(root, text="")
resultado_label.pack(pady=5)
root.mainloop()
Con este código, creamos una interfaz gráfica simple que permite al usuario ingresar la longitud de la contraseña y generar una contraseña con un clic de botón.
En este vídeo hemos aprendido cómo crear un generador de contraseñas en Python utilizando las librerías string
y random
. Hemos visto cómo interactuar con el usuario para obtener la longitud de la contraseña, cómo personalizar los caracteres utilizados y cómo añadir una interfaz gráfica básica. Espero que este proyecto les sea útil y que puedan adaptarlo a sus necesidades. ¡No olviden suscribirse al canal, dejar sus comentarios y darle like al vídeo! ¡Nos vemos en el próximo proyecto!