From 086b1ca6140bea5b8d1ae0d8e16329043785dd33 Mon Sep 17 00:00:00 2001 From: Manuel Vergara Date: Wed, 13 Dec 2023 23:00:26 +0100 Subject: [PATCH] Add course Python ofensivo Signed-off-by: Manuel Vergara --- README.md | 25 ++++------ .../00_ejercicios/01_combinar_listas.py | 24 +++++++++ python-ofensivo/00_ejercicios/README.md | 3 ++ python-ofensivo/01_oneliner/README.md | 50 +++++++++++++++++++ .../02_shebang_convenios/README.md | 29 +++++++++++ python-ofensivo/README.md | 19 +++++++ 6 files changed, 136 insertions(+), 14 deletions(-) create mode 100644 python-ofensivo/00_ejercicios/01_combinar_listas.py create mode 100644 python-ofensivo/00_ejercicios/README.md create mode 100644 python-ofensivo/01_oneliner/README.md create mode 100644 python-ofensivo/02_shebang_convenios/README.md create mode 100644 python-ofensivo/README.md diff --git a/README.md b/README.md index 2fdd4b7..eb14134 100644 --- a/README.md +++ b/README.md @@ -10,6 +10,7 @@ Este repositorio contiene los apuntes tomados en diversos cursos de python refle | [30 days of python](./30-days-of-python/README.md) | Intermedio | --- | 25 horas | [Repo Asabeneh](https://github.com/Asabeneh/30-Days-Of-Python) | | [Cajón de sastre](./catch-all/README.md) | Intermedio | --- | continua | [Personal](https://vergaracarmona.es) | | [scripts-hacking-etico](./scripts-hacking-etico/README.md) | Avanzado | --- | 5 horas | [ChapGPT](https://www.chat.openai.com), [Canal Telegram](https://t.me/seguridadinformatic4) | +| [Python ofensivo](./python-ofensivo/README.md) | Avanzado | 35 horas | ¿? horas | [hack4u](https://hack4u.io) | 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**. @@ -24,10 +25,9 @@ Recuerda,
## Información sobre python +
Qué es python según chatGPT 🤖 - - Python es un lenguaje de programación interpretado y de alto nivel. Python se destaca por su sintaxis clara y legible, lo que lo hace muy accesible tanto para principiantes como para programadores experimentados. Una de las características distintivas de Python es su enfoque en la legibilidad del código, lo que se conoce como el principio "bello es mejor que feo" (beautiful is better than ugly). Esto se logra mediante el uso de una sintaxis clara y estructurada que facilita la comprensión y el mantenimiento del código. @@ -54,22 +54,10 @@ Guido van Rossum es el principal autor de Python, y su continuo rol central en d > Guido van Rossum En 2019, Python fue el lenguaje de programación más popular en GitHub, superando a Java, el segundo lenguaje más popular, por más de 1 millón de repositorios. - -
- -
-Últimas versiones 🔄 -Python 2.7.x (última versión de la serie Python 2.x) fue oficialmente descontinuado el 1 de enero de 2020 (paso inicialmente planeado para 2015), por lo que ya no se publicarán parches de seguridad y otras mejoras para él.​ Con el final del ciclo de vida de Python 2, solo tienen soporte la rama Python 3.6.x​ y posteriores. - -Con Python 3.5 llegaría el soporte incluido para entrada/salida asíncrona a través de la biblioteca asyncio, orientada a aplicaciones que requieren alto rendimiento de código concurrente, como servidores web, bibliotecas de conexión de bases de datos y colas de tareas distribuidas. - -En la actualidad, Python se aplica en los campos de inteligencia artificial y machine learning. -
PEP 20 - Zen de Python 📄 - El Zen de Python es una colección de 20 principios de software que influyen en el diseño del Lenguaje de Programación Python, de los cuales 19 fueron escritos por Tim Peter en junio de 1999. El texto es distribuido como dominio público: ``` @@ -93,6 +81,15 @@ Si la implementación es difícil de explicar, es una mala idea. Si la implementación es fácil de explicar, puede que sea una buena idea. Los espacios de nombres son una gran idea, ¡tengamos más de esos! ``` +
+ +
+Últimas versiones 🔄 +Python 2.7.x (última versión de la serie Python 2.x) fue oficialmente descontinuado el 1 de enero de 2020 (paso inicialmente planeado para 2015), por lo que ya no se publicarán parches de seguridad y otras mejoras para él.​ Con el final del ciclo de vida de Python 2, solo tienen soporte la rama Python 3.6.x​ y posteriores. + +Con Python 3.5 llegaría el soporte incluido para entrada/salida asíncrona a través de la biblioteca asyncio, orientada a aplicaciones que requieren alto rendimiento de código concurrente, como servidores web, bibliotecas de conexión de bases de datos y colas de tareas distribuidas. + +En la actualidad, Python se aplica en los campos de inteligencia artificial y machine learning.
diff --git a/python-ofensivo/00_ejercicios/01_combinar_listas.py b/python-ofensivo/00_ejercicios/01_combinar_listas.py new file mode 100644 index 0000000..1c6f500 --- /dev/null +++ b/python-ofensivo/00_ejercicios/01_combinar_listas.py @@ -0,0 +1,24 @@ +#!/usr/bin/env python3 +""" +Combinar listas +""" + +# Ejercicio 1 +odd_number = [1, 3, 5, 7, 9] +even_number = [2, 4, 6, 8, 10] + +zip_numbers = zip(odd_number, even_number) + +new_list = [] +for odd, even in zip_numbers: + new_list.append(odd + even) + +print(new_list) + +# Ejercicio 2 +odd_number = [1, 3, 5, 7, 9] +even_number = [2, 4, 6, 8, 10] + +result = list(map(sum, zip(odd_number, even_number))) + +print(result) diff --git a/python-ofensivo/00_ejercicios/README.md b/python-ofensivo/00_ejercicios/README.md new file mode 100644 index 0000000..fdfb6c4 --- /dev/null +++ b/python-ofensivo/00_ejercicios/README.md @@ -0,0 +1,3 @@ +# Cajón de sastre de ejercicios + +... diff --git a/python-ofensivo/01_oneliner/README.md b/python-ofensivo/01_oneliner/README.md new file mode 100644 index 0000000..e938954 --- /dev/null +++ b/python-ofensivo/01_oneliner/README.md @@ -0,0 +1,50 @@ + +# Ejemplos de oneliner en Python + +No solo está la opción del interprete de python, también puedes utilizar la opción `-c` del comando para crear un script en línea. + +Ejemplos: + +```bash +python3 -c 'import pty; pty.spawn("/bin/bash")' +``` + +1. **Imprimir números del 1 al 10:** +```bash +python33 -c 'print([i for i in range(1, 11)])' +``` + +2. **Calcular la suma de los cuadrados de los números del 1 al 5:** +```bash +python33 -c 'print(sum([i**2 for i in range(1, 6)]))' +``` + +3. **Listar archivos en el directorio actual:** +```bash +python33 -c 'import os; print(os.listdir("."))' +``` + +4. **Imprimir la fecha y hora actual:** +```bash +python33 -c 'from datetime import datetime; print(datetime.now())' +``` + +5. **Contar las líneas en un archivo:** +```bash +python33 -c 'print(sum(1 for line in open("archivo.txt")))' +``` + +6. **Invertir una cadena:** +```bash +python33 -c 'cadena = "Hola mundo"; print(cadena[::-1])' +``` + +7. **Generar una lista de números pares del 0 al 8:** +```bash +python33 -c 'print([i for i in range(9) if i % 2 == 0])' +``` + +8. **Verificar si un número es primo:** +```bash +python33 -c 'n = 11; print("Primo" if all(n % i != 0 for i in range(2, int(n**0.5) + 1)) and n > 1 else "No primo")' +``` diff --git a/python-ofensivo/02_shebang_convenios/README.md b/python-ofensivo/02_shebang_convenios/README.md new file mode 100644 index 0000000..5bb59c3 --- /dev/null +++ b/python-ofensivo/02_shebang_convenios/README.md @@ -0,0 +1,29 @@ +# Shebang + +Es más óptimo usar `#!/usr/bin/env python` que `#!/usr/bin/python` porque el primero busca el intérprete en el `PATH` del sistema, mientras que el segundo asume que el intérprete está en `/usr/bin/python`. + +# Convenios Python + +Por otro lado, el `if` siguiente es una convención para que el código que está dentro de él solo se ejecute si el script se ejecuta directamente, y no si se importa como módulo. + +```python +if ___name___ == '___main___': + + print('Soy el módulo principal') + +else: + + print('No soy el módulo principal') +``` + +Tener en cuenta que el nombre de las variables son en minúsculas, y si son varias palabras, se separan con guiones bajos, en snake_case Por ejemplo: `nombre_de_la_variable`. + +Las Constantes son en mayúsculas, y si son varias palabras, se separan con guiones bajos, en SCREAMING_SNAKE_CASE. Por ejemplo: `NOMBRE_DE_LA_CONSTANTE`. + +Las Clases son en UpperCamelCase, es decir, la primera letra de cada palabra en mayúsculas. Por ejemplo: `NombreDeLaClase`. + +Las funciones son en minúsculas, y si son varias palabras, se separan con guiones bajos, en lowercamelcase. Por ejemplo: `nombredelafuncion`. + +Las variables privadas se nombran con un guión bajo al principio. Por ejemplo: `_variable_privada`. + + diff --git a/python-ofensivo/README.md b/python-ofensivo/README.md new file mode 100644 index 0000000..cf1ba80 --- /dev/null +++ b/python-ofensivo/README.md @@ -0,0 +1,19 @@ +# Apuntes del curso Python Ofensivo + +_Confirmado, no es una serpiente que te insulta_ + +Estos apuntes y ejercicios en python son parte del curso de Python Ofensivo de [hack4u](https://hack4u.io): +- [Curso Python Ofensivo](https://hack4u.io/cursos/python-ofensivo/) + +¡Te recomiendo que lo hagas cogiendo tus propios apuntes! Este repositorio es para mi uso personal, pero si te sirve de ayuda, ¡me alegro! + +Quizá encuentres aquí cosas que no están en el vídeo, o viceversa, son apuntes personales 😊 + +![](https://c.tenor.com/-SV9TjUGabMAAAAC/hacker-python.gif) + +| Ejercicios y apuntes | +| ------------------------------------------------------------ | +| 0. [Cajón de sastre de ejercicios](./00_cajon_sastre) | +| 1. [Ejemplos de oneliner en python](./01_oneliner/README.md) | +| 2. [Shebang y convenios](./02_shebang_convenios/README.md) | +