Herramientas de usuario

Herramientas del sitio


informatica:programacion:cursos:programacion_desde_cero_con_python

¡Esta es una revisión vieja del documento!


Curso de programación desde cero con Python

El curso estará orientado a personas sin experiencia previa en programación. Por tanto, comenzaremos por aprender a pensar y razonar como programadores, antes de escribir código Python.

Seguiremos esta secuencia de aprendizaje:

Comprender → observar → predecir → ejecutar → modificar → crear → revisar.

Índice

Bloque I. Empezar a programar

Módulo 1. Introducción a la programación y pensamiento computacional

  • Qué es programar y qué problemas permite resolver.
  • Algoritmos e instrucciones ordenadas.
  • Descomposición de problemas.
  • Pensamiento lógico, patrones y abstracción.
  • Pseudocódigo y diagramas de flujo.
  • Predicción de resultados.
  • Errores como parte del aprendizaje.

Módulo 2. Preparación del entorno

  • Qué es Python y cómo se ejecuta.
  • Instalación en Windows y Linux.
  • Editores de código e IDE.
  • Archivos .py y organización del trabajo.
  • Primer programa.
  • Ejecución desde el editor y la terminal.
  • Comandos básicos de terminal.
  • Problemas habituales de instalación.

Módulo 3. Cómo leer y escribir código

  • Instrucciones, expresiones y sintaxis.
  • Orden de ejecución.
  • Comentarios e indentación.
  • Errores de sintaxis.
  • Interpretación de mensajes de error.
  • Modificación de programas existentes.
  • Convenciones de legibilidad.

Bloque II. Fundamentos de Python

Módulo 4. Variables, tipos de datos y operadores

  • Variables y asignación.
  • Nombres significativos.
  • Números enteros y decimales.
  • Booleanos, texto y None.
  • Tipado dinámico y objetos.
  • Conversión de tipos.
  • Operadores y prioridades.
  • Igualdad, identidad y pertenencia.
  • Errores de tipos y precisión numérica.

Módulo 5. Entrada, salida y cadenas de texto

  • print() e input().
  • Conversión y validación de datos.
  • Cadenas y concatenación.
  • Índices y segmentación.
  • Métodos de texto.
  • f-strings.
  • Caracteres especiales, Unicode y UTF-8.
  • Interacción clara con el usuario.

Módulo 6. Condiciones y toma de decisiones

  • Condiciones.
  • if, elif y else.
  • Condiciones compuestas.
  • Valores verdaderos y falsos.
  • Condiciones anidadas.
  • Expresiones condicionales.
  • match y case.
  • Casos límite y errores lógicos.

Módulo 7. Bucles y repetición

  • Repetición de instrucciones.
  • while y for.
  • range().
  • Contadores y acumuladores.
  • break y continue.
  • Bucles anidados.
  • Cláusula else de los bucles.
  • Bucles infinitos.
  • Elección de estructuras de repetición.

Módulo 8. Colecciones de datos

  • Concepto de colección.
  • Listas y sus operaciones.
  • Índices, segmentación y mutabilidad.
  • Tuplas y desempaquetado.
  • Conjuntos.
  • Diccionarios.
  • Recorrido de colecciones.
  • Estructuras anidadas.
  • Referencias y copias.
  • Comprensiones.
  • Selección de estructuras apropiadas.

Bloque III. Resolver problemas con programas propios

Módulo 9. Funciones y descomposición del código

  • Definición y llamada de funciones.
  • Parámetros y argumentos.
  • Valores de retorno.
  • Diferencia entre imprimir y devolver.
  • Argumentos posicionales y nominales.
  • Valores predeterminados.
  • Ámbito de variables.
  • Funciones pequeñas y reutilizables.
  • Funciones puras y efectos secundarios.
  • Docstrings.
  • *args, **kwargs y funciones lambda.

Módulo 10. Resolver problemas de principio a fin

  • Requisitos y definición del problema.
  • Entradas, procesamiento y resultados.
  • Diseño de algoritmos.
  • Descomposición en funciones.
  • Implementación incremental.
  • Pruebas y casos límite.
  • Depuración.
  • Simplificación de soluciones.
  • Justificación de decisiones.

Módulo 11. Errores, excepciones y depuración

  • Errores de sintaxis, ejecución y lógica.
  • Tracebacks.
  • Excepciones frecuentes.
  • try, except, else y finally.
  • raise.
  • Captura específica de excepciones.
  • Depuración paso a paso.
  • Mensajes de error.
  • logging.

Bloque IV. Construir programas organizados

Módulo 12. Módulos, paquetes e importaciones

  • Biblioteca estándar.
  • Importaciones.
  • Creación de módulos.
  • Organización en varios archivos.
  • Paquetes.
  • Importaciones absolutas y relativas.
  • __main__.
  • Ejecución mediante la terminal.
  • Conflictos de nombres e importaciones circulares.

Módulo 13. Archivos y persistencia

  • Rutas y localización de archivos.
  • Lectura y escritura.
  • Gestores de contexto.
  • Codificación de caracteres.
  • pathlib.
  • Diferencias de rutas entre Windows y Linux.
  • CSV y JSON.
  • Persistencia de datos.
  • Errores de archivos y permisos.

Módulo 14. Programación orientada a objetos

  • Clases e instancias.
  • Atributos y métodos.
  • self e __init__().
  • Atributos de instancia y clase.
  • Encapsulación.
  • property.
  • Herencia y composición.
  • Polimorfismo.
  • Métodos especiales.
  • dataclasses.
  • Cuándo utilizar clases.

Bloque V. Python idiomático y buenas prácticas

Módulo 15. Rasgos distintivos e idiomáticos de Python

  • Zen de Python y código Pythonic.
  • Indentación significativa.
  • Asignación múltiple y desempaquetado.
  • Iterables e iteradores.
  • Generadores y yield.
  • Comprensiones.
  • Gestores de contexto.
  • Funciones como objetos y decoradores.
  • Operadores y métodos especiales.
  • Identidad, mutabilidad y referencias.
  • Particularidades de los argumentos.
  • Comparación con otros lenguajes.

Módulo 16. Código legible y mantenible

  • PEP 8 y PEP 257.
  • Nombres descriptivos.
  • Responsabilidades bien definidas.
  • Evitar duplicación y complejidad.
  • Constantes y valores mágicos.
  • Comentarios útiles.
  • DRY y KISS.
  • Separación de responsabilidades y SOLID.
  • Refactorización.
  • Ruff.
  • Revisiones de código.

Módulo 17. Pruebas y fiabilidad

  • Pruebas manuales y automatizadas.
  • Pruebas unitarias.
  • unittest y pytest.
  • Casos normales, extremos e inválidos.
  • Pruebas de funciones y dependencias.
  • Regresión.
  • Cobertura.
  • Integración de pruebas en el desarrollo.

Módulo 18. Tipado y documentación

  • Anotaciones de tipos.
  • Tipado de funciones y colecciones.
  • Tipos opcionales y None.
  • typing.
  • Comprobación estática.
  • Diferencia entre anotaciones y validación en ejecución.
  • Docstrings, README y documentación de proyectos.
  • Consulta de la documentación oficial.

Bloque VI. Herramientas y entorno profesional

Módulo 19. Terminal, Git y gestión de proyectos

  • Terminal en Windows y Linux.
  • Argumentos de línea de comandos.
  • Git.
  • Repositorios, cambios, commits y ramas.
  • .gitignore.
  • Entornos virtuales con venv.
  • pip y dependencias.
  • requirements.txt.
  • pyproject.toml.
  • Estructura de proyectos.
  • Reproducibilidad y portabilidad.

Módulo 20. Biblioteca estándar y aplicaciones útiles

  • Biblioteca estándar.
  • datetime.
  • Matemáticas y estadísticas.
  • Valores aleatorios.
  • argparse.
  • Variables de entorno.
  • Archivos y directorios.
  • Expresiones regulares.
  • HTTP y APIs.
  • SQLite.
  • Seguridad básica.

Bloque VII. Consolidación y especialización futura

Módulo 21. Comparación con otros lenguajes y portabilidad

  • Tipado dinámico y estático.
  • Sintaxis e indentación.
  • Objetos y memoria.
  • Colecciones.
  • Iteradores, generadores y comprensiones.
  • Excepciones y gestores de contexto.
  • Convenciones y restricciones.
  • Comparación con Java, C, JavaScript y C#.
  • Portabilidad entre Windows y Linux.
  • Elección de lenguaje según el problema.

Módulo 22. Proyecto final integrador

  • Definición de requisitos.
  • Diseño del algoritmo.
  • Elección de estructuras de datos.
  • Funciones y módulos.
  • Entrada, salida y persistencia.
  • Validación y tratamiento de errores.
  • Pruebas automatizadas.
  • Refactorización.
  • Documentación y Git.
  • Ejecución en Windows y Linux.
  • Presentación y evaluación.
  • Plan de aprendizaje posterior.

Bloque VIII optativo de ampliación

Módulo 23. Concurrencia y asincronía

Módulo 24. Patrones de diseño en Python

Módulo 25. Rendimiento y profiling

Módulo 26. Publicación y CI/CD

Recursos

[BUENA PRÁCTICA] La documentación oficial permite cambiar de versión desde el selector de la esquina superior izquierda. Si trabajas con una versión distinta de 3.15 (por ejemplo, 3.12 o 3.13), asegúrate de consultar la documentación de tu versión, no la más reciente.

2. PEPs fundamentales

Las PEPs (Python Enhancement Proposals) son los documentos que definen el lenguaje, sus convenciones y sus procesos. Estas son las que se han citado en el curso:

2.1. Estilo y documentación

- PEP 8 – Style Guide for Python Code: https://peps.python.org/pep-0008/ - PEP 257 – Docstring Conventions: https://peps.python.org/pep-0257/ - PEP 20 – The Zen of Python: https://peps.python.org/pep-0020/

2.2. Sistema de tipos

- PEP 484 – Type Hints: https://peps.python.org/pep-0484/ - PEP 557 – Data Classes: https://peps.python.org/pep-0557/ - PEP 649 – Deferred Evaluation Of Annotations: https://peps.python.org/pep-0649/ - PEP 661 – Sentinel Values: https://peps.python.org/pep-0661/ - PEP 747 – Annotating Type Forms (TypeForm): https://peps.python.org/pep-0747/ - PEP 781 – Make TYPE_CHECKING a built-in constant: https://peps.python.org/pep-0781/

2.3. Novedades de Python 3.15

- PEP 686 – Make UTF-8 mode default: https://peps.python.org/pep-0686/ - PEP 703 – Making the Global Interpreter Lock Optional (free-threading): https://peps.python.org/pep-0703/ - PEP 798 – Unpacking in Comprehensions: https://peps.python.org/pep-0798/ - PEP 810 – Explicit lazy imports: https://peps.python.org/pep-0810/ - PEP 814 – Add frozendict built-in type: https://peps.python.org/pep-0814/

2.4. Empaquetado y estructura de proyectos

- PEP 518 – Specifying Minimum Build System Requirements (pyproject.toml): https://peps.python.org/pep-0518/ - PEP 621 – Storing project metadata in pyproject.toml: https://peps.python.org/pep-0621/ - PEP 249 – Python Database API Specification v2.0: https://peps.python.org/pep-0249/

2.5. Otros patrones y protocolos

- PEP 634 – Structural Pattern Matching (match/case): https://peps.python.org/pep-0634/ - PEP 654 – Exception Groups and except*: https://peps.python.org/pep-0654/ - PEP 791 – math.integer: https://peps.python.org/pep-0791/


3. Biblioteca estándar por módulos

Cada módulo de la biblioteca estándar tiene su propia página de documentación. Estas son las que se han utilizado en el curso:

3.1. Fundamentos del lenguaje

- Tipos incorporados (str, list, dict, set, tuple, range, etc.): https://docs.python.org/3.15/library/stdtypes.html - Funciones incorporadas (print, input, len, type, isinstance, breakpoint, property, etc.): https://docs.python.org/3.15/library/functions.html - Mini-lenguaje de formato (f-strings): https://docs.python.org/3.15/library/string.html#format-specification-mini-language

3.2. Módulos de uso general

- datetime – Fechas y horas: https://docs.python.org/3.15/library/datetime.html - statistics – Funciones estadísticas: https://docs.python.org/3.15/library/statistics.html - math – Funciones matemáticas: https://docs.python.org/3.15/library/math.html - math.integer – Funciones matemáticas para enteros (novedad 3.15): https://docs.python.org/3.15/library/math.integer.html - random – Números pseudoaleatorios: https://docs.python.org/3.15/library/random.html - secrets – Números aleatorios seguros: https://docs.python.org/3.15/library/secrets.html - argparse – Interfaz de línea de comandos: https://docs.python.org/3.15/library/argparse.html - os – Interfaz con el sistema operativo (os.environ): https://docs.python.org/3.15/library/os.html - pathlib – Rutas orientadas a objetos: https://docs.python.org/3.15/library/pathlib.html - re – Expresiones regulares: https://docs.python.org/3.15/library/re.html - urllib.request – Apertura de URLs: https://docs.python.org/3.15/library/urllib.request.html - sqlite3 – Base de datos SQLite: https://docs.python.org/3.15/library/sqlite3.html - csv – Lectura y escritura de CSV: https://docs.python.org/3.15/library/csv.html - json – Codificación y decodificación JSON: https://docs.python.org/3.15/library/json.html - shelve – Persistencia de objetos Python: https://docs.python.org/3.15/library/shelve.html - copy – Copia superficial y profunda: https://docs.python.org/3.15/library/copy.html - logging – Registro de eventos: https://docs.python.org/3.15/library/logging.html - dataclasses – Clases de datos: https://docs.python.org/3.15/library/dataclasses.html - typing – Anotaciones de tipos: https://docs.python.org/3.15/library/typing.html - unittest – Marco de pruebas unitarias: https://docs.python.org/3.15/library/unittest.html - unittest.mock – Objetos simulados para pruebas: https://docs.python.org/3.15/library/unittest.mock.html - pdb – Depurador de Python: https://docs.python.org/3.15/library/pdb.html - traceback – Formato de los mensajes de error: https://docs.python.org/3.15/library/traceback.html - __main__ – Entorno de código de máximo nivel: https://docs.python.org/3.15/library/__main__.html - Advertencias de seguridad (Security Considerations): https://docs.python.org/3.15/library/security_warnings.html

[AMPLIACIÓN] Para explorar la biblioteca estándar completa, el índice alfabético es la mejor herramienta: https://docs.python.org/3.15/py-modindex.html. También puedes usar help() en el intérprete o pydoc desde la terminal.

4. Referencia del lenguaje y modelo de datos

- Modelo de datos (métodos especiales, protocolos): https://docs.python.org/3.15/reference/datamodel.html - Expresiones (operadores, comprensiones, condicionales): https://docs.python.org/3.15/reference/expressions.html - Sentencias compuestas (if, for, while, try, match, with): https://docs.python.org/3.15/reference/compound_stmts.html - Sistema de importación: https://docs.python.org/3.15/reference/import.html - Prioridad de operadores: https://docs.python.org/3.15/reference/expressions.html#operator-precedence


informatica/programacion/cursos/programacion_desde_cero_con_python.1793476138.txt.gz · Última modificación: por tempwin