Temario Curso Python: lo que vas a saber HACER — módulo a módulo | El Pythonista

Lo que te enseña el temario nadie lo dice así:
lo que vas a saber HACER, no lo que vas a "ver".

37 horas de vídeo, +700 actividades y un proyecto real que termina en producción. Esto no es para curiosos: es exigente. Y eso es exactamente lo que lo hace valioso.

11 módulos 37+ horas de vídeo +700 actividades

Hay mil sitios gratis para "aprender Python". El problema es que ninguno te dice para qué.

Tutoriales, vídeos de YouTube, cursos de 12 horas gratis. Y aun así la mayoría lleva meses — o años — con Python instalado y sin haber terminado nada que funcione de verdad. No es falta de contenido: es falta de destino.

No es culpa tuya. El problema es que un tutorial te enseña los bucles, otro las funciones, otro las APIs… y cada uno usa su propio ejemplo de juguete. Aprendes la sintaxis suelta, pero el día que te sientas a construir algo real las piezas no encajan, te atascas, y vuelves a YouTube a empezar otra vez desde el principio. Y otra. Y otra.

Este temario está hecho al revés. Hay un solo hilo de la primera línea hasta el último despliegue: un único proyecto, MovieTracker, que empieza siendo cuatro líneas en el terminal y termina como una API REST en producción, accesible desde cualquier navegador con tu propia URL. Cada módulo le añade una capa real. No estudias conceptos en abstracto: los usas el mismo día sobre algo que ya funciona y que va creciendo contigo.

Sí, puedes aprender Python gratis en mil sitios. Igual que puedes aprender a cocinar mirando vídeos. Lo que cuesta encontrar no es la información: es un camino ordenado, con alguien que te dice qué va antes y qué va después, y que te responde cuando te atascas.

Lo que vas a saber HACER al terminar cada bloque

No el contenido que "se ve". Lo que vas a poder hacer tú solo, con tu teclado, sin copiar de nadie:

Te aviso antes de que bajes más: este temario es largo y exigente

Son 11 módulos, 37 horas de vídeo y más de 700 ejercicios y tests. No es un fin de semana ni una promesa de "aprende Python en 10 días". Quien te vende eso te está vendiendo otra cosa. Lo que sí te garantizo es que, con 2-3 horas semanales constantes, en unos meses tienes una API real desplegada en internet y sabes pensar como un programador: descomponer un problema y actuar cuando algo falla. La extensión no es un defecto. Es la prueba de que aquí no se saltó nada.

Para que no entres a ciegas, mejor te lo digo claro desde aquí:

Esto es para ti si…

  • Empiezas de cero o aprendiste solo, a saltos, y quieres por fin un camino ordenado.
  • Estás harto de entender la teoría y bloquearte al construir algo real.
  • Quieres terminar con un proyecto de verdad que enseñar, no diez tutoriales a medias.
  • Prefieres practicar y equivocarte a ver vídeos de forma pasiva.

Esto NO es para ti si…

  • Buscas un atajo mágico para "programar en un finde" sin tocar el teclado.
  • No vas a dedicarle ni un par de horas a la semana de forma constante.
  • Ya eres dev senior y buscas un máster avanzado: aquí se parte de cero de verdad.
  • Quieres coleccionar cursos sin terminar ninguno. Este pide que construyas.

¿Y por qué seguir este temario y no otro?

Porque detrás hay un autor que se dedica a esto de verdad, no un recopilatorio anónimo de vídeos. Oscar Ramírez es autor de Python a Fondo (Marcombo, bestseller con +5.000 copias vendidas), 13+ años programando, CTO y ex-Revolut, y ha formado a más de 100 personas en HarbourSpace (en inglés), la EOI y mentorías privadas. Cuando te atasques, te responde quien escribió el libro.

+5.000copias de "Python a Fondo"
+100.000lectores en el último año
+100personas formadas en directo
13+años programando en Python

Si este es el camino que llevas buscando, deja de saltar de tutorial en tutorial.

Acceso de por vida por 147€. Pago único, sin suscripciones, con 14 días de garantía.

Ver precio y empezar — 147€

¿Aún con dudas? Baja y mira el temario módulo a módulo, con el código real de cada uno. Sin filtros.

El curso en menos de 2 minutos

De la primera variable al deploy en producción

Un proyecto que crece contigo, de cuatro líneas a producción

No estudias Python en abstracto. Desde el primer día construyes MovieTracker, y cada módulo le añade una capa real. Esto es lo que pasa por dentro, versión a versión.

v0.1
Módulo 1

Terminal básica

Variables, condiciones, input() del usuario. La app ya funciona desde el primer día.

# MovieTracker v0.1 — Módulo 1
titulo = input("Título de la película: ")
rating = float(input("Rating (0-10): "))

if rating >= 9.0:
    clasificacion = "Obra maestra"
elif rating >= 7.0:
    clasificacion = "Muy buena"
else:
    clasificacion = "Regular"

print(f"{titulo}: {clasificacion}")
v1.0
Módulos 2–3

Colección interactiva

Listas, diccionarios, funciones con validación. La app ya gestiona una colección real.

# MovieTracker v2.0 — Módulo 3
def validate_rating(rating):
    """Valida que el rating esté entre 0 y 10."""
    return 0 <= rating <= 10

def add_movie(movies, titulo, year, rating):
    """Agrega una película validada a la colección."""
    if validate_rating(rating):
        movies.append({"titulo": titulo, "year": year, "rating": rating})
        return True
    return False
v3.0
Módulo 4

Con SQLite

Archivos JSON y base de datos real. Los datos persisten entre ejecuciones.

# MovieTracker v3.0 — Módulo 4
import sqlite3, json

conn = sqlite3.connect("movietracker.db")
cursor = conn.cursor()
cursor.execute("""
    CREATE TABLE IF NOT EXISTS peliculas (
        id     INTEGER PRIMARY KEY AUTOINCREMENT,
        titulo TEXT NOT NULL,
        year   INTEGER,
        rating REAL
    )
""")
conn.commit()
v4.0
Módulos 5–6

Orientada a Objetos

Clases, herencia, excepciones. El código se vuelve reutilizable y profesional.

# MovieTracker v4.0 — Módulo 5
class Movie:
    def __init__(self, title, year, rating, director):
        self.title = title
        self.rating = rating
        self.added_at = datetime.now()

    def classify(self):
        if self.rating >= 9.0:
            return "🌟 Masterpiece"
        elif self.rating >= 8.0:
            return "⭐ Excellent"
        return "👍 Good"

    def __str__(self):
        return f"{self.title} ({self.year}) — {self.rating}/10"
v5.5
Módulos 7–9

API REST

Flask, JWT, pytest, organización profesional. La app ya tiene API.

# MovieTracker v5.5 — Módulo 8
from flask import Flask, jsonify, request

app = Flask(__name__)

@app.get("/peliculas")
def listar():
    return jsonify(peliculas), 200

@app.post("/peliculas")
def agregar():
    data = request.get_json()
    peliculas.append(data)
    return jsonify(data), 201

@app.delete("/peliculas/<int:pelicula_id>")
def eliminar(pelicula_id):
    return jsonify({"deleted": pelicula_id}), 200
PROD
Módulos 10–11

En producción

DigitalOcean, Gunicorn, Nginx. Tu proyecto real accesible en internet.

# gunicorn_config.py — Módulo 10
import os

bind = "0.0.0.0:8000"
workers = (2 * os.cpu_count()) + 1
timeout = 120

# $ gunicorn app:app --config gunicorn_config.py
# → MovieTracker en https://tudominio.com ✓

Los 11 módulos: a dónde llegas en cada uno

No lo que "se ve", sino lo que vas a saber hacer tú solo al terminar cada módulo. Con las horas reales y el código real. Sin maquillaje.

M0

Tu entorno listo y tu primer script funcionando

45 min
  • Instalar Python y configurar PyCharm
  • Primer script: hola mundo sin miedo
  • Cómo está organizado el curso
  • Qué vas a construir módulo a módulo
# Tu primer Python
print("Hola, mundo")
print("Empieza MovieTracker")
M1

Escribes tu primera app que pide datos y toma decisiones

4h 20 min
  • Variables, tipos de datos, type()
  • F-strings, operadores, input()
  • Condicionales if/elif/else
  • MovieTracker v0.1 funcionando en terminal
  • L1.1 — Setup e instalación: Python y PyCharm desde cero
  • L1.2 — Variables y tipos de datos
  • L1.3 — Operadores, strings y f-strings
  • L1.4 — Condicionales y control de flujo
titulo = input("Título: ")
rating = float(input("Rating: "))
print(f"{titulo}: {rating}/10")
M2

Gestionas colecciones de datos y filtras lo que te importa

4h 50 min
  • Bucles for y while
  • Listas, tuplas, sets
  • Diccionarios: la estructura clave del curso
  • List comprehensions y filtros
  • L2.1 — Bucles for y while
  • L2.2 — Listas: secuencias ordenadas y mutables
  • L2.3 — Tuplas: inmutabilidad y packing/unpacking
  • L2.4 — Diccionarios: la estructura clave del curso
  • L2.5 — Sets y frozensets: unicidad y operaciones de conjuntos
Mini-juegos: Ahorcado, Lotería del Cine, Detector de Plagio con índice de Jaccard
peliculas = []
for p in peliculas:
    if p["rating"] >= 8:
        print(p["titulo"])
M3

Organizas tu código en funciones reutilizables que no se rompen

3h 30 min
  • def, parámetros, valores por defecto
  • return, scope, funciones anidadas
  • Docstrings y buenas prácticas
  • MovieTracker modularizado con funciones
  • L3.1 — Definir funciones: def, parámetros y return
  • L3.2 — Parámetros y argumentos: posicionales, keyword, *args y **kwargs
  • L3.3 — Funciones de orden superior y recursión
  • L3.4 — Lambda, generadores y pipelines: map, filter, zip y yield
Mini-juego: Tres en Raya — construido y refactorizado con funciones
def add_movie(movies, titulo, rating):
    """Agrega película si el rating es válido."""
    if 0 <= rating <= 10:
        movies.append({"titulo": titulo, "rating": rating})
M4

Tus datos no desaparecen al cerrar el programa

3h 15 min
  • Leer y escribir archivos: open(), context managers
  • JSON y CSV: guardar datos reales
  • SQLite desde Python con sqlite3
  • MovieTracker con base de datos real
  • L4.1 — Archivos de texto: open(), context managers, JSON y CSV
  • L4.2 — SQLite con Python: bases de datos relacionales con sqlite3
MovieTracker v2.2: login por usuario + recomendador Jaccard + exportación JSON/CSV/Excel
with open("datos.json", "w") as f:
    json.dump(peliculas, f, indent=2)
M5

Escribes código como lo escriben los profesionales: con clases

3h 45 min
  • Clases, __init__, atributos y métodos
  • Herencia y polimorfismo
  • Encapsulación y propiedades
  • MovieTracker refactorizado con clases
  • L5.1 — Clases y objetos: __init__, atributos y métodos
  • L5.2 — Propiedades, encapsulación y métodos especiales
  • L5.3 — Herencia, polimorfismo y super()
Proyecto extra: Ajedrez completo y jugable con reglas reales, jaque y jaque mate
class Movie:
    def __init__(self, titulo, year, rating):
        self.titulo = titulo
        self.rating = rating
M6

Tu código no falla cuando algo sale mal — lo gestiona

2h 30 min
  • try/except/finally: capturar errores
  • raise: lanzar excepciones propias
  • Excepciones personalizadas con herencia
  • Código robusto que no falla en producción
  • L6.1 — try/except/finally: capturar y gestionar excepciones
  • L6.2 — Excepciones personalizadas con herencia
class InvalidRatingError(ValueError):
    pass

try:
    movie.set_rating(11)
except InvalidRatingError as e:
    print(e)
M7

Estructuras tu proyecto como un paquete Python instalable

2h 45 min
  • import, módulos propios, __init__.py
  • Entornos virtuales con venv
  • Estructura de proyectos profesional
  • MovieTracker como paquete instalable
  • L7.1 — Módulos e import: stdlib, __name__ y módulos propios
  • L7.2 — Paquetes, venv y pip: proyecto con estructura profesional
Proyecto extra: Conversor de divisas live — crypto, fiat y oro con 3 APIs en tiempo real
# movietracker/models.py
from .database import db
from .validators import validate_rating
M8

Construyes una API REST completa lista para consumir

4h 15 min
  • Rutas, request, jsonify, blueprints
  • Flask-SQLAlchemy: modelos y migraciones
  • API REST completa con CRUD
  • MovieTracker como API lista para consumir
@app.post("/peliculas")
def agregar():
    data = request.get_json()
    return jsonify(data), 201
M9

Tu API tiene login, tokens y tests que prueban que funciona

3h 20 min
  • Consumir APIs externas con requests
  • Testing con pytest y fixtures
  • Autenticación JWT paso a paso
  • API con login, tokens y rutas protegidas
def test_agregar_pelicula(client):
    resp = client.post("/peliculas", json={"titulo": "Oppenheimer"})
    assert resp.status_code == 201
M10

Tu proyecto funciona en internet, en tu propia URL

4h 10 min
  • Git desde cero: commits, ramas, GitHub
  • DigitalOcean: servidor Linux real
  • Gunicorn + Nginx en producción
  • MovieTracker accesible en tu dominio
# $ gunicorn app:app --config gunicorn_config.py
bind = "0.0.0.0:8000"
workers = (2 * os.cpu_count()) + 1
BONUS

MovieTracker v1.0 en producción: prueba en mano, no apuntes

3h 30 min
  • Relaciones en base de datos: usuarios y listas
  • Optimización de consultas SQL
  • Frontend HTML/CSS/JS básico conectado a la API
  • Deploy VPS completo: MovieTracker v1.0 PROD
# MovieTracker v1.0 — En producción
# https://tudominio.com ✓

Este es nuestro congelador: aquí no se guarda vídeo pasivo.

Cada módulo tiene ejercicios de código, tests y retos. Más de 700 en total. La prueba de que no es ver — es hacer.

Ejercicios con solución incluida

Practicas inmediatamente después de cada lección, con la solución al lado. Haz, falla, corrige. Así se aprende a programar.

Tests al final de cada módulo

Antes de pasar al siguiente módulo, demuestras que lo anterior está consolidado. No memorización: comprensión real.

Retos para los que quieren más

Opcionales, pero los que los hacen notan la diferencia. Para quien quiere terminar el curso con más de un proyecto entre manos.

+700 actividades en total — la prueba de que aquí se practica, no solo se mira

Las preguntas que la mayoría se guarda para sí

¿Está todo disponible desde el primer día o tengo que esperar?

Los módulos 1 al 6 están disponibles en el momento en que pagas. No tienes que esperar. Los módulos 7 al 11 se desbloquean según avanzas — no para hacerte esperar, sino para que llegues a cada módulo cuando de verdad lo necesitas y no antes. El ritmo tiene lógica.

Es mucho contenido. ¿Cuánto tiempo necesito a la semana?

Con 2-3 horas semanales constantes terminas en 4-5 meses. Acceso de por vida: si tienes una semana complicada, no pasa nada. Si tienes más tiempo, vas más rápido. Lo que no funciona es apuntarse y no abrir el curso en dos meses — eso sí que es dinero tirado.

¿Necesito saber programar para empezar?

No. El módulo 0 parte de instalar Python y PyCharm en una máquina vacía. Si ya sabes algo de programación, los primeros módulos los pasarás más rápido. Pero el proyecto MovieTracker te ocupará desde el primer día de todas formas. Aquí no hay espera para llegar "a la parte interesante": el primer día ya estás construyendo algo.

Ya sabes exactamente lo que hay. Ahora decide.

Llevas meses saltando de tutorial en tutorial. Si este es el camino ordenado que buscabas, dentro de unos minutos puedes estar escribiendo tu primera línea de verdad.

147€
Pago único Acceso de por vida Garantía 14 días
Empezar hoy — 147€ pago único

Sin suscripción. Sin cargos ocultos. Acceso de por vida.
Si en 14 días no es lo que esperabas, te devuelvo el dinero sin preguntas.

Ver los módulos ↓ o empezar el curso →