From 6f8fa5ee629418ac8afb25b355a8a982b8c6d384 Mon Sep 17 00:00:00 2001 From: Manuel Vergara Date: Thu, 21 Sep 2023 23:46:25 +0200 Subject: [PATCH] Update README & add catch-all Signed-off-by: Manuel Vergara --- 30-days-of-python/README.md | 2 +- README.md | 15 +++--- .../01_scripts_words_linux/random_pass.py | 53 +++++++++++++++++++ .../01_scripts_words_linux/random_text.py | 42 +++++++++++++++ catch-all/README.md | 11 ++++ 5 files changed, 115 insertions(+), 8 deletions(-) create mode 100644 catch-all/01_scripts_words_linux/random_pass.py create mode 100644 catch-all/01_scripts_words_linux/random_text.py create mode 100644 catch-all/README.md diff --git a/30-days-of-python/README.md b/30-days-of-python/README.md index 52f05ec..4a5776d 100644 --- a/30-days-of-python/README.md +++ b/30-days-of-python/README.md @@ -3,7 +3,7 @@ Estos apuntes y ejercicios en python han sido realizados siguiendo un repositorio de [Asabeneh](https://github.com/Asabeneh): - [30 Days of Python](https://github.com/Asabeneh/30-Days-Of-Python) -El reposotorio original está en inglés, pero he traducido los ejercicios al español, así como los apuntes que he creído convenientes resaltar. +El repositorio original está en inglés, pero he traducido los ejercicios al español, así como los apuntes que he creído convenientes resaltar. ## Índice del curso y apuntes realizados diff --git a/README.md b/README.md index c6ead7e..87028a3 100644 --- a/README.md +++ b/README.md @@ -2,13 +2,14 @@ Este repositorio contiene los apuntes tomados en diversos cursos de python reflejados en la siguiente tabla: -| Curso | Ubicación | Nivel | Duración de vídeos | Duración personal aprox. | Fuente original | -| --------------------: | :---------------------------------------------- | :--------: | :----------------: | :----------------------: | :------------------------------------------------------------------------------------------------------ | -| HolaMundo | [contenidos](./HolaMundo/README.md) | Bajo | 5 horas | 15 horas | [Aprende python ahora!](https://www.youtube.com/watch?v=tQZy0U8s9LY&ab_channel=HolaMundo) | -| Python total | [contenidos](./python-total/README.md) | Intermedio | 30 horas | 200 horas | [Escuela Directa](https://www.udemy.com/course/python-total) | -| Python y ChatGPT | [contenidos](./python-chatgpt/README.md) | Intermedio | 2 horas | 15 horas | [Escuela Directa](https://www.udemy.com/course/python-chatgpt/), [ChapGPT](https://www.chat.openai.com) | -| scripts-hacking-etico | [contenidos](./scripts-hacking-etico/README.md) | Avanzado | --- | 5 horas | [ChapGPT](https://www.chat.openai.com), [Canal Telegram](https://t.me/seguridadinformatic4) | -| 30 days of python | [contenidos](./30-days-of-python/README.md) | Intermedio | --- | próximamente | [Repo Asabeneh](https://github.com/Asabeneh/30-Days-Of-Python) | +| Nombre del curso
y ubicación | Nivel | Duración
de vídeos | Duración personal
aprox. | Fuente original | +| ---------------------------------------------------------: | :--------: | :---------------------: | :---------------------------: | :------------------------------------------------------------------------------------------------------ | +| [HolaMundo](./HolaMundo/README.md) | Bajo | 5 horas | 15 horas | [Aprende python ahora!](https://www.youtube.com/watch?v=tQZy0U8s9LY&ab_channel=HolaMundo) | +| [Python total](./python-total/README.md) | Intermedio | 30 horas | 200 horas | [Escuela Directa](https://www.udemy.com/course/python-total) | +| [Python y ChatGPT](./python-chatgpt/README.md) | Intermedio | 2 horas | 15 horas | [Escuela Directa](https://www.udemy.com/course/python-chatgpt/), [ChapGPT](https://www.chat.openai.com) | +| [30 days of python](./30-days-of-python/README.md) | Intermedio | --- | próximamente | [Repo Asabeneh](https://github.com/Asabeneh/30-Days-Of-Python) | +| [scripts-hacking-etico](./scripts-hacking-etico/README.md) | Avanzado | --- | 5 horas | [ChapGPT](https://www.chat.openai.com), [Canal Telegram](https://t.me/seguridadinformatic4) | +| [Cajón de sastre](./Catch-all/README.md) | Intermedio | --- | continua | [Personal](https://vergaracarmona.es) | Las prácticas y ejercicios aquí contenidos son los que hice mediante los cursos mencionados o por investigación propia, con mucho café para combatir el insomnio. Realmente, los apuntes no fueron pensados para compartirlos, por ello pueden tener lagunas de información o contenido adicional respecto al curso, ya que se redactaron para recordar procedimientos y conceptos que EMHO me parecieron relevantes. Teniendo estos documentos tan completos y entendiendo que el conocimiento debe ser libre, se decidió compartirlos. Si encuentras **cualquier error puedes abrir una issue o contactar conmigo**. diff --git a/catch-all/01_scripts_words_linux/random_pass.py b/catch-all/01_scripts_words_linux/random_pass.py new file mode 100644 index 0000000..a9d916f --- /dev/null +++ b/catch-all/01_scripts_words_linux/random_pass.py @@ -0,0 +1,53 @@ +""" +Random Password Generator +========================= +Genera una contraseña aleatoria con el número +de palabras que indiques a partir de un archivo +de palabras de Linux ubicado en la mayoría +de las distribuciones en /usr/share/dict/words + +Despues, pregunta al usuario si desea mezclar +las letras de la contraseña generada. +""" +import random + +# Ruta al archivo de palabras en Linux (puede variar según la distribución) +word_file = '/usr/share/dict/words' + +# Función para generar una contraseña aleatoria + + +def generate_password(word_file, num_words): + with open(word_file, 'r') as file: + words = [line.strip() for line in file.readlines()] + + # Seleccionar un número de palabras al azar + password_words = random.sample(words, num_words) + + # Combinar las palabras para formar la contraseña + password = ''.join(password_words) + + return password + +# Función para mezclar las letras de una cadena + + +def shuffle_letters(input_string): + letters = list(input_string) + random.shuffle(letters) + return ''.join(letters) + + +# Preguntar al usuario cuántas palabras desea en la contraseña +num_words = int(input("Número de palabras para la contraseña: ")) + +# Generar una contraseña aleatoria con el número de palabras especificado +random_password = generate_password(word_file, num_words) +print("Contraseña aleatoria generada:", random_password) + +# Preguntar al usuario si desea mezclar las letras +mezclar_letras = input( + "¿Desea mezclar las letras de la contraseña? (s/n): ").lower() +if mezclar_letras == 's': + random_password = shuffle_letters(random_password) + print("Contraseña con letras mezcladas:", random_password) diff --git a/catch-all/01_scripts_words_linux/random_text.py b/catch-all/01_scripts_words_linux/random_text.py new file mode 100644 index 0000000..f05dc67 --- /dev/null +++ b/catch-all/01_scripts_words_linux/random_text.py @@ -0,0 +1,42 @@ +""" +random text generator +===================== +Genera un texto aleatorio a partir de un archivo +de palabras de Linux ubicado en la mayoría +de las distribuciones en /usr/share/dict/words + +Pregunta al usuario el número de párrafos +y palabras por párrafo. + +Se puede utilizar a modo de lorem ipsum. +""" +import random + +# Ruta al archivo de palabras en Linux (puede variar según la distribución) +word_file = '/usr/share/dict/words' + +# Función para generar texto aleatorio + + +def generate_random_text(word_file, num_words=50): + with open(word_file, 'r') as file: + words = [line.strip() for line in file.readlines()] + + # Seleccionar un número de palabras al azar + random_words = random.sample(words, num_words) + + # Combinar las palabras para formar el texto + random_text = ' '.join(random_words) + + return random_text + + +# Preguntar al usuario el número de párrafos y palabras por párrafo +num_paragraphs = int(input("Número de párrafos a generar: ")) +num_words_per_paragraph = int(input("Número de palabras por párrafo: ")) + +# Generar los párrafos de texto aleatorio +print("Texto aleatorio generado:") +for _ in range(num_paragraphs): + random_paragraph = generate_random_text(word_file, num_words_per_paragraph) + print(random_paragraph, "\n") diff --git a/catch-all/README.md b/catch-all/README.md new file mode 100644 index 0000000..d267754 --- /dev/null +++ b/catch-all/README.md @@ -0,0 +1,11 @@ +# Ejercicios del cajón de sastre Python + +Aquí iré dejando scripts y ejercicios que se me ocurran, con lo que no hay un orden ni un objetivo concreto. Simplemente, me apetece ir practicando y aprendiendo Python. + + + +## Índice de ejercicios + +| Nombre | Descripción | Nivel | +| ---------------------------------------: | :--------------------------------------------- | :--------: | +| [Words Linux](./01_scripts_words_linux/) | Scritp con el fichero: `/usr/share/dict/words` | intermedio |