Curso-lenguaje-python/README.md

205 lines
10 KiB
Markdown
Raw Normal View History

# Curso de python 🚀
2023-04-12 21:52:03 +02:00
Este repositorio contiene los apuntes tomados en diversos cursos de python, en especial en el curso «[Python total](https://www.udemy.com/course/python-total)» impartido por «Escuela Directa» que consta de 30 horas aproximadamente de vídeo-tutoriales. Las prácticas y ejercicios aquí contenidos tuvieron una duración de más de 200 horas, de mucho café e insomnio.
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 el autor creyó relevantes. Teniendo un documento, a mi parecer, tan completo y entendiendo que el conocimiento debe ser libre se decidió compartirlo. Cualquier error puedes abrir un issue o contactar conmigo.
Si te parece útil este documento puedes agradecerlo a través de las vías de contacto de la web https://vergaracarmona.es o [invítandome a un café](#invítame-a-un-café-☕️) ☕️
Recuerda,
> *"Quien se corta su propia leña se calienta dos veces"*
---
<br>
# Qué es python según chatGPT
Python es un lenguaje de programación interpretado y de alto nivel. Fue creado por Guido van Rossum y lanzado por primera vez en 1991. 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.
Python es un lenguaje multipropósito, lo que significa que se puede utilizar para una amplia variedad de aplicaciones, como desarrollo web, análisis de datos, inteligencia artificial, automatización de tareas, desarrollo de juegos y más. Tiene una amplia biblioteca estándar que proporciona módulos y funciones para realizar diversas tareas comunes, lo que facilita el desarrollo de aplicaciones sin tener que escribir todo desde cero.
Una de las razones por las que Python ha ganado popularidad es su comunidad activa y su ecosistema de paquetes. Existen numerosas bibliotecas y marcos de trabajo desarrollados por la comunidad que amplían las capacidades de Python en diferentes áreas, como Django para desarrollo web, NumPy y pandas para análisis de datos, TensorFlow y PyTorch para aprendizaje automático, entre otros.
Además, Python es conocido por ser un lenguaje fácil de aprender y utilizar. Su sintaxis intuitiva y legible permite a los programadores escribir código de manera más rápida y eficiente, lo que reduce el tiempo de desarrollo y facilita la colaboración en proyectos.
En resumen, Python es un lenguaje de programación de alto nivel, interpretado y fácil de aprender que se utiliza ampliamente en una variedad de aplicaciones, desde desarrollo web hasta análisis de datos e inteligencia artificial. Su enfoque en la legibilidad del código y su comunidad activa lo convierten en una elección popular entre los programadores.
## Tabla de comparación con otros lenguajes
| Característica | Python | Java | C++ | JavaScript |
| --------------------- | ------------------------------------------------ | ---------------------------------------- | --------------------------------------- | ----------------------------------------- |
| Paradigma | Multiparadigma | Orientado a objetos, estructurado | Multiparadigma | Multiparadigma |
| Tipado | Dinámico | Estático | Estático | Dinámico |
| Sintaxis | Concisa y legible | Verbosa | Compleja | Flexible |
| Uso principal | Desarrollo web, ciencia de datos, automatización | Desarrollo de aplicaciones empresariales | Desarrollo de sistemas, videojuegos | Desarrollo web, aplicaciones interactivas |
| Bibliotecas | Amplia variedad | Amplia variedad | Amplia variedad | Amplia variedad |
| Orientación a objetos | Sí | Sí | Sí | Sí |
| Rendimiento | Moderado | Alto | Alto | Moderado |
| Comunidad y soporte | Gran comunidad, abundante documentación | Gran comunidad, abundante documentación | Gran comunidad, abundante documentación | Gran comunidad, abundante documentación |
| Curva de aprendizaje | Baja | Moderada | Alta | Baja |
Esta tabla solo proporciona una comparación general entre los lenguajes y que cada uno tiene sus propias fortalezas y áreas de aplicación específicas.
---
<br>
# **Índice de los contenidos de cada día** 📎
- [Día 1 - Programa un creador de nombres](dia_01/README.md)
- 1.1. - print
- 1.2. - strings
- 1.3. - input
- 1.4. - Proyecto del Día 1
- [Día 2 - Programa un calculador de comisiones](dia_02/README.md)
- 2.1. - Tipos de datos
- 2.2. - Variables
- 2.3. - Nombres de variables
- 2.4. - integers & floats
- 2.5. - Conversiones
- 2.6. - Formatear cadenas
- 2.7. - Operadores matemáticos
- 2.8. - Redondeo
- 2.9. - Proyecto del Día 2
- [Día 3 - Programa un analizador de texto](dia_03/README.md)
- 3.1. - Index( )
- 3.2. - Substrings
- 3.3. - Métodos para Strings
- 3.4. - Strings: propiedades
- 3.5. - Listas
- 3.6. - Diccionarios
- 3.7. - Tuples
- 3.8. - sets
- 3.9. - booleanos
- 3.10. - Proyecto del Día 3
- [Día 4 - Programa el juego "adivina el número"](dia_04/README.md)
- 4.1. - Operadores de comparación
- 4.2. - Operadores lógicos
- 4.3. - Control de flujo
- 4.4. - loops while
- 4.5. - range( )
- 4.6. - enumerate( )
- 4.7. - zip( )
- 4.8. - min( ) & max( )
- 4.9. - random
- 4.10. - Comprensión de listas
- 4.11. - match
- 4.12. - Proyecto del Día 4
- [Día 5 - Programa el juego "El ahorcado"](dia_05/README.md)
- 5.1. - Documentación
- 5.2. - Funciones
- 5.3. - return
- 5.4. - Funciones dinámicas
- 5.5. - Interacción entre funciones
- 5.6. - *args
- 5.7. - **kwargs
- 5.8. - Ejercicios
- 5.9. - Proyecto del Día 5
- [Día 6 - Programa un recetario](dia_06/README.md)
- 6.1. - Abrir y leer archivos
- 6.2. - Crear y escribir archivos
- 6.3. - Directorios
- 6.4. - pathlib
- 6.5. - Path
- 6.6. - Limpiar la consola
- 6.7. - Archivos + funciones
- 6.8. - Proyecto del Día 6
- [Día 7 - Programa una cuenta bancaria](dia_07/README.md)
- 7.1. - Clases
- 7.2. - Atributos
- 7.3. - Métodos
- 7.4. - Tipos de métodos
- 7.5. - Herencia
- 7.6. - Herencia extendida
- 7.7. - Polimorfismo
- 7.8. - Pilares de la Programación Orientada a Objetos
- 7.9. - Métodos especiales
- 7.10. - Proyecto del Día 7
- [Día 8 - Programa una consola de turnos](dia_08/README.md)
- 8.1. - Instalar paquetes
- 8.2. - Módulos y paquetes
- 8.3. - Manejo de errores
- 8.4. - pylint
- 8.5. - unittest
- 8.6. - Decoradores
- 8.7. - Generadores
- 8.8. - Proyecto del Día 8
- [Día 9 - Programa un buscador de números de serie](dia_09/README.md)
- 9.1. - Módulo collections
- 9.2. - Módulos shutil & os
- 9.3. - Módulo datetime
- 9.4. - Módulo para medir el tiempo
- 9.5. - Módulo math
- 9.6. - Expresiones regulares
- 9.7. - Comprimir y descomprimir archivos
- 9.8. - Proyecto del Día 9
- [Día 10 - Programa el juego "Invasión espacial"](dia_10/README.md)
- 10.1. - Distancia entre dos puntos
- 10.2. - Convertir el Juego en un Archivo Ejecutable (.exe)
- [Día 11 - Programa un extracto de datos web](dia_11/README.md)
- 11.1. - Extraer elementos de una clase
- [Día 12 - Programa un gestor de restaurantes](dia_12/README.md)
- [Día 13 - Programa un asistente de voz](dia_13/README.md)
- 13.1. - Librerias y módulos
- 13.2. - Algunos problemas con las bibliotecas
- 13.3. - Enlaces
- [Día 14 - Programa un controlador de asistencia](dia_14/README.md)
- 14.1. - Bibliotecas
- [Día 15 - Programa un modelo de machine learning](dia_15/README.md)
- 5.1. - Bibliotecas
- 5.2. - Definiciones
- 5.3. - Cuadernos de trabajo en Colab de google drive
- [Día 16 - Programa una aplicación web de tareas pendientes](dia_16/README.md)
- 16.1. - Entornos Virtuales
- 16.2. - Módulos
- 16.3. - Preparación de estructura de trabajo
- 16.4. - Configurar url
- 16.5. - Crear tabla de tareas
- 16.6. - Configurar la vista
- 16.7. - Configurar la vista de Detalle
- 16.8. - Crear Links a Detalle
- 16.9. - Agregar nueva tarea
- 16.10. - Formulario para nueva tarea
- 16.11. - Editar tarea
- 16.12. - Eliminar tarea
- 16.13. - Crear la lógica de Logueo / Deslogueo
- 16.14. - Formulario de Logueo / Deslogueo
- 16.15. - Restringir acceso
- 16.16. - Información específica de usuario
- 16.17. - Registrar nuevo usuario
- 16.18. - Barra de búsquedas
- 16.19. - Un estilo para todas las vistas
- 16.20. - Estilo general
- 16.21. - Estilo de barra superiores
- 16.22. - estilo de la lista
- 16.23. - Estilo de la barra de cerca
- 16.24. - Terminar el sitio
- [Día 17 - Extra bibliotecas para hacking ético](dia_17/README.md)
- 17.1. - Bibliotecas
---
<br>
## Licencia
- [Licencia Creative Commons Atribución-CompartirIgual 4.0 Internacional](LICENSE)
---
<br><br>
# Agradecimientos 🎁
<br>
# Invítame a un café ☕️
<p>
<a href="https://www.buymeacoffee.com/manuelver"> <img align="left" src="https://cdn.buymeacoffee.com/buttons/v2/default-yellow.png" height="50" width="210" alt="https://www.buymeacoffee.com/manuelver" /></a>
</p>
<br><br><br>
[Manu](https://vergaracarmona.es) 😊