<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Programador desde cero</title><description>Rutas de aprendizaje de programación, lecciones con laboratorio y ejercicios ejecutables.</description><link>https://programardesdecero.com/</link><language>es</language><item><title>Tu primer programa</title><link>https://programardesdecero.com/lecciones/python-desde-cero/hola-mundo/</link><guid isPermaLink="true">https://programardesdecero.com/lecciones/python-desde-cero/hola-mundo/</guid><description>Cómo se ejecuta Python, qué hace print() y por qué el primer programa de cualquier curso es el mismo desde hace 45 años.</description><category>Python desde cero</category><category>print</category><category>primer programa</category><category>comentario</category></item><item><title>Leer un error sin miedo</title><link>https://programardesdecero.com/lecciones/python-desde-cero/leer-errores/</link><guid isPermaLink="true">https://programardesdecero.com/lecciones/python-desde-cero/leer-errores/</guid><description>El traceback de Python no es un castigo: es un mapa. Aprende a leerlo de abajo arriba y te ahorra horas de adivinar.</description><category>Python desde cero</category><category>errores</category><category>traceback</category><category>depuración</category></item><item><title>Variables: dar nombre a los datos</title><link>https://programardesdecero.com/lecciones/python-desde-cero/variables/</link><guid isPermaLink="true">https://programardesdecero.com/lecciones/python-desde-cero/variables/</guid><description>Un programa que no guarda nada no puede hacer nada. Las variables son las cajas con nombre donde guardas los datos de tu programa.</description><category>Python desde cero</category><category>variables</category><category>asignación</category><category>nombres</category></item><item><title>Los tipos básicos</title><link>https://programardesdecero.com/lecciones/python-desde-cero/tipos-basicos/</link><guid isPermaLink="true">https://programardesdecero.com/lecciones/python-desde-cero/tipos-basicos/</guid><description>Todo dato en Python tiene un tipo: entero, decimal, texto o booleano. Aprende a distinguirlos con type() y a no mezclarlos.</description><category>Python desde cero</category><category>tipos</category><category>int</category><category>float</category><category>str</category><category>bool</category><category>type</category></item><item><title>Operadores aritméticos</title><link>https://programardesdecero.com/lecciones/python-desde-cero/operadores-aritmeticos/</link><guid isPermaLink="true">https://programardesdecero.com/lecciones/python-desde-cero/operadores-aritmeticos/</guid><description>Sumar, restar, multiplicar y dividir suena trivial hasta que / no da lo que esperabas: división real, entera, resto y potencias.</description><category>Python desde cero</category><category>operadores</category><category>aritmética</category><category>división</category><category>módulo</category><category>potencia</category></item><item><title>Comparación y operadores lógicos</title><link>https://programardesdecero.com/lecciones/python-desde-cero/comparacion-y-logicos/</link><guid isPermaLink="true">https://programardesdecero.com/lecciones/python-desde-cero/comparacion-y-logicos/</guid><description>Los programas deciden con booleanos: comparar con == y combinar con and, or y not. La base de todo if que escribirás.</description><category>Python desde cero</category><category>comparación</category><category>booleanos</category><category>and</category><category>or</category><category>not</category></item><item><title>Precedencia y conversión de tipos</title><link>https://programardesdecero.com/lecciones/python-desde-cero/precedencia-y-conversion/</link><guid isPermaLink="true">https://programardesdecero.com/lecciones/python-desde-cero/precedencia-y-conversion/</guid><description>Por qué 2 + 3 * 4 no es 20: el orden en que Python calcula y cómo convertir entre tipos con int(), float() y str().</description><category>Python desde cero</category><category>precedencia</category><category>paréntesis</category><category>conversión</category><category>int</category><category>float</category><category>str</category></item><item><title>Formatear texto con f-strings</title><link>https://programardesdecero.com/lecciones/python-desde-cero/cadenas-formatos/</link><guid isPermaLink="true">https://programardesdecero.com/lecciones/python-desde-cero/cadenas-formatos/</guid><description>Mezclar variables con texto sin pelearte con comas ni concatenaciones: f-strings, formato de decimales y alineación.</description><category>Python desde cero</category><category>f-strings</category><category>formato</category><category>texto</category><category>decimales</category></item><item><title>Índices y slicing</title><link>https://programardesdecero.com/lecciones/python-desde-cero/cadenas-indices-y-slicing/</link><guid isPermaLink="true">https://programardesdecero.com/lecciones/python-desde-cero/cadenas-indices-y-slicing/</guid><description>Cada letra tiene su posición: leer caracteres sueltos con [0], trozos con [a:b] y darle la vuelta a un texto con [::-1].</description><category>Python desde cero</category><category>índices</category><category>slicing</category><category>len</category><category>rebanadas</category></item><item><title>Métodos de cadena</title><link>https://programardesdecero.com/lecciones/python-desde-cero/cadenas-metodos/</link><guid isPermaLink="true">https://programardesdecero.com/lecciones/python-desde-cero/cadenas-metodos/</guid><description>Los métodos transforman texto sin tocar posiciones: mayúsculas, minúsculas, quitar espacios, buscar y reemplazar. El cuchillo suizo del texto.</description><category>Python desde cero</category><category>métodos</category><category>upper</category><category>lower</category><category>strip</category><category>replace</category><category>split</category><category>join</category></item><item><title>if, elif y else</title><link>https://programardesdecero.com/lecciones/python-desde-cero/if-elif-else/</link><guid isPermaLink="true">https://programardesdecero.com/lecciones/python-desde-cero/if-elif-else/</guid><description>Hacer que el programa elija qué hacer: la lógica de decisión básica con if, elif y else.</description><category>Python desde cero</category><category>condicionales</category><category>if</category><category>elif</category><category>else</category><category>flujo de control</category></item><item><title>Qué considera Python verdadero</title><link>https://programardesdecero.com/lecciones/python-desde-cero/valores-veraces/</link><guid isPermaLink="true">https://programardesdecero.com/lecciones/python-desde-cero/valores-veraces/</guid><description>No solo True y False: listas vacías, 0, None, cadenas vacías... aprende la regla de los &quot;valores falsy&quot; para escribir condiciones limpias.</description><category>Python desde cero</category><category>valores veraces</category><category>falsy</category><category>truthy</category><category>booleanos</category><category>condicionales</category></item><item><title>El operador ternario</title><link>https://programardesdecero.com/lecciones/python-desde-cero/operador-ternario/</link><guid isPermaLink="true">https://programardesdecero.com/lecciones/python-desde-cero/operador-ternario/</guid><description>Condicional en una línea: valor_si_verdadero if condicion else valor_si_falso. Útil, pero con moderación.</description><category>Python desde cero</category><category>ternario</category><category>condicional</category><category>expresión</category><category>if-else</category></item><item><title>for y range</title><link>https://programardesdecero.com/lecciones/python-desde-cero/for-y-range/</link><guid isPermaLink="true">https://programardesdecero.com/lecciones/python-desde-cero/for-y-range/</guid><description>Repetir sin copiar: iterar sobre secuencias con for y generar números con range().</description><category>Python desde cero</category><category>bucles</category><category>for</category><category>range</category><category>iteración</category></item><item><title>El bucle while</title><link>https://programardesdecero.com/lecciones/python-desde-cero/while/</link><guid isPermaLink="true">https://programardesdecero.com/lecciones/python-desde-cero/while/</guid><description>Repetir mientras se cumpla una condición. Ideal cuando no sabes cuántas vueltas darás.</description><category>Python desde cero</category><category>bucles</category><category>while</category><category>condición</category><category>bucle infinito</category></item><item><title>break, continue y else</title><link>https://programardesdecero.com/lecciones/python-desde-cero/break-continue-else/</link><guid isPermaLink="true">https://programardesdecero.com/lecciones/python-desde-cero/break-continue-else/</guid><description>Controlar el flujo dentro del bucle: saltar iteraciones, salir antes y detectar si terminó sin break.</description><category>Python desde cero</category><category>break</category><category>continue</category><category>else</category><category>control de flujo</category></item><item><title>Crear y leer listas</title><link>https://programardesdecero.com/lecciones/python-desde-cero/listas/</link><guid isPermaLink="true">https://programardesdecero.com/lecciones/python-desde-cero/listas/</guid><description>La estructura de datos más usada en Python: ordenada, mutable y admite cualquier tipo mezclado.</description><category>Python desde cero</category><category>listas</category><category>arrays</category><category>índices</category><category>slicing</category><category>mutabilidad</category></item><item><title>Métodos de lista</title><link>https://programardesdecero.com/lecciones/python-desde-cero/listas-metodos/</link><guid isPermaLink="true">https://programardesdecero.com/lecciones/python-desde-cero/listas-metodos/</guid><description>append, extend, insert, pop, remove, clear, index, count, sort, reverse, copy: la herramienta completa para manipular listas.</description><category>Python desde cero</category><category>listas</category><category>métodos</category><category>append</category><category>pop</category><category>sort</category><category>mutabilidad</category></item><item><title>List comprehensions</title><link>https://programardesdecero.com/lecciones/python-desde-cero/listas-comprehensions/</link><guid isPermaLink="true">https://programardesdecero.com/lecciones/python-desde-cero/listas-comprehensions/</guid><description>Crear listas en una línea transformando y filtrando: [expr for x in iterable if condicion]. La forma pythonica de mapear y filtrar.</description><category>Python desde cero</category><category>list comprehensions</category><category>comprensión de listas</category><category>map</category><category>filter</category><category>pythonico</category></item><item><title>Tuplas y desempaquetado</title><link>https://programardesdecero.com/lecciones/python-desde-cero/tuplas-y-desempaquetado/</link><guid isPermaLink="true">https://programardesdecero.com/lecciones/python-desde-cero/tuplas-y-desempaquetado/</guid><description>Listas inmutables que protegen tus datos y permiten asignación múltiple: x, y = punto.</description><category>Python desde cero</category><category>tuplas</category><category>inmutabilidad</category><category>desempaquetado</category><category>asignación múltiple</category></item><item><title>Conjuntos: elementos sin repetir</title><link>https://programardesdecero.com/lecciones/python-desde-cero/conjuntos/</link><guid isPermaLink="true">https://programardesdecero.com/lecciones/python-desde-cero/conjuntos/</guid><description>Set: colección desordenada, sin duplicados, con operaciones de teoría de conjuntos (unión, intersección, diferencia).</description><category>Python desde cero</category><category>conjuntos</category><category>set</category><category>únicos</category><category>unión</category><category>intersección</category><category>diferencia</category></item><item><title>Diccionarios: clave y valor</title><link>https://programardesdecero.com/lecciones/python-desde-cero/diccionarios/</link><guid isPermaLink="true">https://programardesdecero.com/lecciones/python-desde-cero/diccionarios/</guid><description>La tabla hash de Python: acceso O(1) por clave, mutable, ordenada (desde 3.7). La estructura más versátil tras la lista.</description><category>Python desde cero</category><category>diccionarios</category><category>dict</category><category>hash</category><category>clave-valor</category><category>mapping</category></item><item><title>Definir y llamar funciones</title><link>https://programardesdecero.com/lecciones/python-desde-cero/definir-funcion/</link><guid isPermaLink="true">https://programardesdecero.com/lecciones/python-desde-cero/definir-funcion/</guid><description>La unidad de trabajo del programador: encapsular lógica, evitar repetición y dar nombres a las cosas.</description><category>Python desde cero</category><category>funciones</category><category>def</category><category>llamada</category><category>encapsulamiento</category><category>DRY</category></item><item><title>Parámetros y valores por defecto</title><link>https://programardesdecero.com/lecciones/python-desde-cero/parametros/</link><guid isPermaLink="true">https://programardesdecero.com/lecciones/python-desde-cero/parametros/</guid><description>Posicionales, nombrados, *args, **kwargs, valores por defecto mutables (la trampa), y keyword-only arguments.</description><category>Python desde cero</category><category>parámetros</category><category>args</category><category>kwargs</category><category>valores por defecto</category><category>keyword-only</category></item><item><title>Qué devuelve una función</title><link>https://programardesdecero.com/lecciones/python-desde-cero/retorno/</link><guid isPermaLink="true">https://programardesdecero.com/lecciones/python-desde-cero/retorno/</guid><description>return devuelve valor y sale; sin return devuelve None; múltiples valores = tupla. Diferencia entre imprimir y devolver.</description><category>Python desde cero</category><category>return</category><category>None</category><category>tupla</category><category>múltiples valores</category><category>imprimir vs devolver</category></item><item><title>Ámbito: dónde vive una variable</title><link>https://programardesdecero.com/lecciones/python-desde-cero/ambito/</link><guid isPermaLink="true">https://programardesdecero.com/lecciones/python-desde-cero/ambito/</guid><description>LEGB: Local, Enclosing, Global, Built-in. Por qué x=1 dentro de una función no cambia la x de fuera, y cómo usar global/nonlocal cuando de verdad hace falta.</description><category>Python desde cero</category><category>ámbito</category><category>scope</category><category>LEGB</category><category>global</category><category>nonlocal</category><category>variables</category></item><item><title>*args y **kwargs</title><link>https://programardesdecero.com/lecciones/python-desde-cero/args-kwargs/</link><guid isPermaLink="true">https://programardesdecero.com/lecciones/python-desde-cero/args-kwargs/</guid><description>Funciones flexibles: *args recoge posiciones extra en tupla, **kwargs recoge keywords extra en dict. Desempaquetar al llamar con * y **.</description><category>Python desde cero</category><category>args</category><category>kwargs</category><category>varargs</category><category>desempaquetado</category><category>flexibilidad</category></item><item><title>Lambdas y funciones de orden superior</title><link>https://programardesdecero.com/lecciones/python-desde-cero/funciones-orden-superior/</link><guid isPermaLink="true">https://programardesdecero.com/lecciones/python-desde-cero/funciones-orden-superior/</guid><description>Funciones anónimas (lambda) y funciones que reciben/devuelven funciones: map, filter, sorted(key=...), y el patrón decorador.</description><category>Python desde cero</category><category>lambda</category><category>orden superior</category><category>map</category><category>filter</category><category>sorted</category><category>key</category><category>decorador</category></item><item><title>Menú interactivo con validación</title><link>https://programardesdecero.com/lecciones/python-desde-cero/proyecto-consola-menu/</link><guid isPermaLink="true">https://programardesdecero.com/lecciones/python-desde-cero/proyecto-consola-menu/</guid><description>Unir condicionales, bucles, listas y funciones en un programa real: una agenda de contactos con menú en consola.</description><category>Python desde cero</category><category>proyecto</category><category>menú</category><category>consola</category><category>validación</category><category>agenda</category></item><item><title>Importar: la biblioteca estándar</title><link>https://programardesdecero.com/lecciones/python-desde-cero/imports/</link><guid isPermaLink="true">https://programardesdecero.com/lecciones/python-desde-cero/imports/</guid><description>import, from ... import, alias, importar módulos propios. La biblioteca estándar: os, sys, json, random, datetime, pathlib...</description><category>Python desde cero</category><category>import</category><category>módulos</category><category>biblioteca estándar</category><category>alias</category><category>from</category></item><item><title>Cómo se organiza un proyecto</title><link>https://programardesdecero.com/lecciones/python-desde-cero/estructura-de-proyectos/</link><guid isPermaLink="true">https://programardesdecero.com/lecciones/python-desde-cero/estructura-de-proyectos/</guid><description>Paquetes, __init__.py, estructura src/, tests/, pyproject.toml, venv. De script suelto a proyecto instalable.</description><category>Python desde cero</category><category>proyecto</category><category>paquete</category><category>pyproject.toml</category><category>src</category><category>tests</category><category>instalable</category></item><item><title>Manejar excepciones</title><link>https://programardesdecero.com/lecciones/python-desde-cero/try-except/</link><guid isPermaLink="true">https://programardesdecero.com/lecciones/python-desde-cero/try-except/</guid><description>try/except/else/finally, capturar excepciones específicas, lanzar excepciones (raise), crear excepciones propias. Que el programa no se caiga.</description><category>Python desde cero</category><category>excepciones</category><category>try</category><category>except</category><category>finally</category><category>raise</category><category>error handling</category></item><item><title>Leer y escribir archivos</title><link>https://programardesdecero.com/lecciones/python-desde-cero/leer-archivos/</link><guid isPermaLink="true">https://programardesdecero.com/lecciones/python-desde-cero/leer-archivos/</guid><description>open() con with, modos (r, w, a, rb, wb), encoding UTF-8, read/readline/readlines, write/writelines, pathlib.Path.read_text/write_text.</description><category>Python desde cero</category><category>archivos</category><category>open</category><category>with</category><category>read</category><category>write</category><category>pathlib</category><category>encoding</category></item><item><title>Clases y objetos</title><link>https://programardesdecero.com/lecciones/python-desde-cero/clases-objetos/</link><guid isPermaLink="true">https://programardesdecero.com/lecciones/python-desde-cero/clases-objetos/</guid><description>Definir clases con class, crear instancias, atributos de instancia vs clase, __init__, representación (repr/str). Modelar conceptos del mundo real.</description><category>Python desde cero</category><category>clases</category><category>objetos</category><category>__init__</category><category>atributos</category><category>instancias</category><category>OOP</category></item><item><title>Métodos y self</title><link>https://programardesdecero.com/lecciones/python-desde-cero/metodos-y-self/</link><guid isPermaLink="true">https://programardesdecero.com/lecciones/python-desde-cero/metodos-y-self/</guid><description>Funciones dentro de la clase que operan sobre la instancia. self es el primer argumento implícito. Métodos de instancia, de clase (@classmethod) y estáticos (@staticmethod).</description><category>Python desde cero</category><category>métodos</category><category>self</category><category>classmethod</category><category>staticmethod</category><category>comportamiento</category></item><item><title>Herencia y super()</title><link>https://programardesdecero.com/lecciones/python-desde-cero/herencia/</link><guid isPermaLink="true">https://programardesdecero.com/lecciones/python-desde-cero/herencia/</guid><description>Crear subclases que heredan de una clase base. Sobrescribir métodos, llamar al padre con super(), herencia múltiple, MRO. Principio Liskov.</description><category>Python desde cero</category><category>herencia</category><category>super</category><category>override</category><category>MRO</category><category>polimorfismo</category><category>Liskov</category></item><item><title>property y métodos mágicos (dunder)</title><link>https://programardesdecero.com/lecciones/python-desde-cero/property-y-dunder/</link><guid isPermaLink="true">https://programardesdecero.com/lecciones/python-desde-cero/property-y-dunder/</guid><description>@property para getters/setters elegantes, @setter, @deleter. Métodos dunder: __eq__, __hash__, __len__, __getitem__, __iter__, __call__, __bool__, __enter__/__exit__ (context manager).</description><category>Python desde cero</category><category>property</category><category>dunder</category><category>magic methods</category><category>getters</category><category>setters</category><category>context manager</category><category>operadores</category></item><item><title>Generadores e iteradores</title><link>https://programardesdecero.com/lecciones/python-desde-cero/generadores/</link><guid isPermaLink="true">https://programardesdecero.com/lecciones/python-desde-cero/generadores/</guid><description>Crear secuencias perezosas con yield, el protocolo de iteración y itertools para pipelines de datos eficientes.</description><category>Python desde cero</category><category>generadores</category><category>yield</category><category>iteradores</category><category>itertools</category><category>lazy evaluation</category></item><item><title>Decoradores</title><link>https://programardesdecero.com/lecciones/python-desde-cero/decoradores/</link><guid isPermaLink="true">https://programardesdecero.com/lecciones/python-desde-cero/decoradores/</guid><description>Funciones que envuelven otras funciones: sintaxis @, argumentos, functools.wraps, casos de uso reales (timer, cache, retry, validación).</description><category>Python desde cero</category><category>decoradores</category><category>higher-order functions</category><category>functools</category><category>metaprogramación</category><category>@</category></item><item><title>Anotaciones de tipos</title><link>https://programardesdecero.com/lecciones/python-desde-cero/type-hints/</link><guid isPermaLink="true">https://programardesdecero.com/lecciones/python-desde-cero/type-hints/</guid><description>Type hints: sintaxis, genéricos, Union, Optional, TypedDict, Protocol. Herramientas: mypy, pyright. Ventajas: documentación viva, refactor seguro, IDEs inteligentes.</description><category>Python desde cero</category><category>type hints</category><category>mypy</category><category>typing</category><category>anotaciones</category><category>genéricos</category><category>Protocol</category></item><item><title>Docstrings</title><link>https://programardesdecero.com/lecciones/python-desde-cero/docstrings/</link><guid isPermaLink="true">https://programardesdecero.com/lecciones/python-desde-cero/docstrings/</guid><description>Convenciones: Google, NumPy, Sphinx. Qué documentar: módulos, clases, funciones, argumentos, excepciones, ejemplos. Herramientas: pdoc, Sphinx, mkdocstrings. Doctest: tests en la documentación.</description><category>Python desde cero</category><category>docstrings</category><category>documentación</category><category>Google style</category><category>NumPy style</category><category>Sphinx</category><category>doctest</category></item><item><title>Testing básico con unittest y pytest</title><link>https://programardesdecero.com/lecciones/python-desde-cero/testing/</link><guid isPermaLink="true">https://programardesdecero.com/lecciones/python-desde-cero/testing/</guid><description>Escribir tests unitarios: unittest (stdlib), pytest (ecosistema). Fixtures, parametrización, mocks, cobertura. Organización: test_*.py, estructura AAA. Buenas prácticas: rápidos, aislados, deterministas.</description><category>Python desde cero</category><category>testing</category><category>unittest</category><category>pytest</category><category>fixtures</category><category>mocks</category><category>cobertura</category><category>TDD</category></item><item><title>Logging en vez de print</title><link>https://programardesdecero.com/lecciones/python-desde-cero/logging/</link><guid isPermaLink="true">https://programardesdecero.com/lecciones/python-desde-cero/logging/</guid><description>Módulo logging: niveles, handlers, formatters, filtros, configuración por dict/fileConfig. Structlog para logging estructurado (JSON). Rotación de archivos. Buenas prácticas: qué loguear, niveles, contexto.</description><category>Python desde cero</category><category>logging</category><category>structlog</category><category>handlers</category><category>formatters</category><category>rotación</category><category>JSON</category><category>observabilidad</category></item><item><title>Git, ruff y pytest: el taller</title><link>https://programardesdecero.com/lecciones/python-desde-cero/git-y-herramientas/</link><guid isPermaLink="true">https://programardesdecero.com/lecciones/python-desde-cero/git-y-herramientas/</guid><description>Flujo Git profesional: commits atómicos, convenciones, ramas, PRs. Calidad automatizada: ruff (lint+format), pytest (tests), pre-commit hooks. CI/CD básico con GitHub Actions.</description><category>Python desde cero</category><category>git</category><category>ruff</category><category>pytest</category><category>pre-commit</category><category>GitHub Actions</category><category>CI/CD</category><category>convenciones</category><category>commits</category></item><item><title>pip y PyPI: instalar librerías</title><link>https://programardesdecero.com/lecciones/python-desde-cero/pip-y-pypi/</link><guid isPermaLink="true">https://programardesdecero.com/lecciones/python-desde-cero/pip-y-pypi/</guid><description>El gestor de paquetes de Python: buscar, instalar, actualizar y desinstalar paquetes desde PyPI.</description><category>Python desde cero</category><category>pip</category><category>PyPI</category><category>paquetes</category><category>instalación</category><category>dependencias</category></item><item><title>Entornos virtuales y requirements</title><link>https://programardesdecero.com/lecciones/python-desde-cero/entornos-virtuales/</link><guid isPermaLink="true">https://programardesdecero.com/lecciones/python-desde-cero/entornos-virtuales/</guid><description>Aislar dependencias por proyecto con venv: crear, activar, desactivar y usar requirements.txt para compartir entornos.</description><category>Python desde cero</category><category>venv</category><category>virtualenv</category><category>aislamiento</category><category>requirements</category><category>dependencias</category></item><item><title>Rutas con pathlib</title><link>https://programardesdecero.com/lecciones/python-desde-cero/pathlib/</link><guid isPermaLink="true">https://programardesdecero.com/lecciones/python-desde-cero/pathlib/</guid><description>Manipulación orientada a objetos de rutas de archivos: unir, separar, leer, escribir, comprobar existencia y recorrer directorios.</description><category>Python desde cero</category><category>pathlib</category><category>rutas</category><category>archivos</category><category>directorios</category><category>sistema de archivos</category></item><item><title>Fechas, tiempos y colecciones útiles</title><link>https://programardesdecero.com/lecciones/python-desde-cero/datetime-y-colecciones/</link><guid isPermaLink="true">https://programardesdecero.com/lecciones/python-desde-cero/datetime-y-colecciones/</guid><description>datetime para fechas y horas, timedelta para aritmética temporal, y collections para estructuras avanzadas: Counter, defaultdict, deque, namedtuple.</description><category>Python desde cero</category><category>datetime</category><category>timedelta</category><category>collections</category><category>Counter</category><category>defaultdict</category><category>deque</category><category>namedtuple</category></item><item><title>Peticiones HTTP con requests</title><link>https://programardesdecero.com/lecciones/python-desde-cero/peticiones-http/</link><guid isPermaLink="true">https://programardesdecero.com/lecciones/python-desde-cero/peticiones-http/</guid><description>La librería requests: GET, POST, PUT, DELETE, parámetros, headers, JSON, manejo de errores, timeouts y sesiones.</description><category>Python desde cero</category><category>requests</category><category>HTTP</category><category>GET</category><category>POST</category><category>JSON</category><category>headers</category><category>timeout</category><category>sesión</category></item><item><title>Consumir una API real</title><link>https://programardesdecero.com/lecciones/python-desde-cero/consumir-apis/</link><guid isPermaLink="true">https://programardesdecero.com/lecciones/python-desde-cero/consumir-apis/</guid><description>Patrones reales: autenticación, paginación, rate limiting, reintentos con backoff, validación de respuesta y manejo robusto de errores.</description><category>Python desde cero</category><category>API</category><category>autenticación</category><category>paginación</category><category>rate limiting</category><category>backoff</category><category>reintentos</category><category>validación</category></item><item><title>CSV: leer y escribir tablas</title><link>https://programardesdecero.com/lecciones/python-desde-cero/csv/</link><guid isPermaLink="true">https://programardesdecero.com/lecciones/python-desde-cero/csv/</guid><description>El módulo csv: reader, writer, DictReader, DictWriter. Leer, escribir, filtrar y transformar datos tabulares. Manejo de encoding, delimitadores y comillas.</description><category>Python desde cero</category><category>csv</category><category>reader</category><category>writer</category><category>DictReader</category><category>DictWriter</category><category>tablas</category><category>datos</category></item><item><title>JSON y resúmenes con statistics</title><link>https://programardesdecero.com/lecciones/python-desde-cero/json-y-resumen/</link><guid isPermaLink="true">https://programardesdecero.com/lecciones/python-desde-cero/json-y-resumen/</guid><description>Serializar/deserializar JSON, pretty-print, claves no-string, datetime. Módulo statistics: media, mediana, moda, desviación, varianza, cuantiles.</description><category>Python desde cero</category><category>JSON</category><category>serialización</category><category>statistics</category><category>media</category><category>mediana</category><category>desviación</category><category>cuantiles</category></item><item><title>Gestor de tareas en consola</title><link>https://programardesdecero.com/lecciones/python-desde-cero/proyecto-final-tareas/</link><guid isPermaLink="true">https://programardesdecero.com/lecciones/python-desde-cero/proyecto-final-tareas/</guid><description>Proyecto integrador: CRUD de tareas con prioridades, fechas, categorías, persistencia en JSON, búsqueda, filtrado y estadísticas.</description><category>Python desde cero</category><category>proyecto</category><category>CRUD</category><category>JSON</category><category>consola</category><category>tareas</category><category>persistencia</category><category>filtros</category></item><item><title>Cliente de API con caché local</title><link>https://programardesdecero.com/lecciones/python-desde-cero/proyecto-final-api/</link><guid isPermaLink="true">https://programardesdecero.com/lecciones/python-desde-cero/proyecto-final-api/</guid><description>Proyecto avanzado: cliente HTTP robusto con caché en SQLite, rate limiting automático, reintentos, paginación y CLI interactiva.</description><category>Python desde cero</category><category>proyecto</category><category>API</category><category>HTTP</category><category>SQLite</category><category>caché</category><category>rate limiting</category><category>CLI</category><category>requests</category></item></channel></rss>