Fundamentos del lenguaje
72 pasos en 13 series de Python.
Todo lo que necesitas antes de las partes interesantes. Variables y el puñado de tipos que Python tiene, cadenas y los métodos que hacen la mayor parte del trabajo, control de flujo, las cuatro colecciones, funciones y clases. Después, una segunda pasada que profundiza sobre el mismo terreno: conjuntos y mapeos, manejo de números y texto, errores más allá de un try pelado, y cómo se evalúan las expresiones.
Es el tour más largo de aquí, con 72 pasos, y es a propósito. La mayor parte de lo que vas a teclear en Python por el resto de tu vida está en este vocabulario. El Bis son programas completos en vez de fragmentos, así que terminas tecleando algo que de verdad corre.
Variables y tipos
- Variables y asignaciónCómo los valores reciben nombres: el primer movimiento en cualquier lenguaje.
- Trabajar con númerosAritmética de enteros y flotantes, y los operadores que difieren.
- Booleanos y comparacionesTrue y False, y las expresiones que los producen.
- Convertir entre tiposMover valores entre tipos con llamadas a constructores.
- None y valores por defectoRepresentar la ausencia: el valor que significa que no se encontró nada.
- Desempaquetar secuenciasSeparar una secuencia en piezas con nombre en una sola sentencia.
Cadenas
- Formato con f-stringsLas cadenas plantilla en línea de Python, con formato incorporado.
- Métodos esenciales de cadenasEl kit de todos los días para limpiar y examinar texto.
- Cortes de cadenasExtraer subcadenas por posición con la notación de cortes.
- Dividir y unirEl viaje de ida y vuelta entre cadenas y listas de piezas.
- Pruebas y relleno de cadenasInspeccionar y alinear texto con los predicados de str.
- Verificar palíndromosUn calentamiento de limpieza de cadenas construido sobre cortes.
- De título a slugCómo los títulos se vuelven slugs de URL.
- Verificar anagramasOrdenar como forma canónica — un truco común de comparación.
- Cifrado CésarEl antiguo cifrado por sustitución, como ejercicio de aritmética modular.
Control de flujo
- if, elif, elseRamificar: elegir un camino según condiciones, de arriba abajo.
- Bucles for y rangeBucles de conteo: start, stop y step de range en acción.
- Bucles whileIterar hasta que una condición cambie, no hasta un conteo fijo.
- Coincidencia estructural de patronesmatch/case: ramificar según la forma de los datos, no solo su valor.
- FizzBuzzEl clásico ejercicio de entrevista para bucles y condicionales.
- MCD y mcmEl algoritmo de Euclides, con 2300 años encima, sigue siendo el MCD estándar.
- Prueba de primalidadDivisión por tentativa: la prueba de primalidad más simple que vale la pena escribir.
Colecciones
- Operaciones con diccionariosEl caballo de batalla clave-valor: leer, escribir y mezclar dicts.
- Operaciones con conjuntosMatemática de pertenencia: uniones, intersecciones y diferencias.
- Métodos de listasLas operaciones mutantes que soporta toda lista de Python.
- Partir una lista en bloquesPartir una lista en piezas de tamaño fijo — básico para paginación y APIs.
- Deduplicar conservando el ordenDeduplicación que preserva el orden — una limpieza de datos de uso diario.
- Aplanar listas anidadasLa recursión maneja datos anidados a cualquier nivel donde los bucles simples se enredan.
- Transponer una matrizLas filas se vuelven columnas en un solo modismo.
- Conteo de frecuencia de palabrasEl patrón de todos los días para llevar conteos de lo que sea con un dict.
- Mezclar dos listas ordenadasLa mitad de mezcla del merge sort — dos punteros sobre entradas ordenadas.
- Agrupar elementos por claveEl GROUP BY de SQL, en tres líneas de Python.
Funciones
- Definir funcionesFirmas de funciones: argumentos posicionales, por palabra clave y por defecto.
- *args y **kwargsFunciones variádicas: aceptar cualquier número de argumentos.
- Lambdas y ordenamientoFunciones anónimas diminutas, sobre todo como claves de ordenamiento.
- Funciones como valoresLas funciones son objetos: pásalas, guárdalas, devuélvelas.
- RecursiónFunciones que se llaman a sí mismas, encogiéndose hacia un caso base.
- Alcance y clausurasDónde viven los nombres: locales, globales y capturados.
Clases
- Una clase con métodosLa anatomía de una clase: estado en __init__, comportamiento en métodos.
- Herencia y superSubclases: compartir una base y sobrescribir lo que difiere.
- PropiedadesSintaxis de atributo con poder de método: campos calculados y protegidos.
- __repr__ y __eq__Enseñar a los objetos a imprimirse y a compararse por valor.
- Una clase de pilaLa estructura LIFO debajo del historial de deshacer y de los parsers.
Iteradores, errores y archivos
- Iteradores y nextEl protocolo bajo cada bucle for: iter, next, agotamiento.
- Generador de FibonacciLos generadores producen valores perezosamente — secuencias infinitas sin memoria infinita.
- Promedio móvilSuavizar un stream de números con una ventana deslizante.
- try, except, finallyManejar fallas: atrapa lo que esperas, relanza lo que no.
- Lanzar excepciones propiasNombrar tus modos de falla con tu propia clase de excepción.
- Leer y escribir archivosIO de archivos con
with: abrir, usar y cerrar en automático. - Rutas con pathlibRutas del sistema de archivos como objetos en vez de cadenas.
Algoritmos
- Two-sum con un mapa hashEl clásico problema de entrevista en tiempo lineal.
- Búsqueda binariaLa forma más rápida de buscar en datos ordenados — O(log n) le gana al escaneo.
- QuicksortUn ordenamiento de divide y vencerás, corto de escribir y rápido en la práctica.
- Codificación run-lengthRun-length encoding: el esquema de compresión más simple que existe.
- Profundidad de un dict anidadoMedir la profundidad de recursión sobre datos anidados.
Conjuntos y mapeos
- Conjuntos congeladosUn conjunto inmutable, así que puede ser clave de un dict o vivir dentro de otro conjunto.
- Vistas de diccionariokeys, values e items son vistas vivas, no copias.
- Ordenar con una claveUna pasada, una función clave, y un orden estable en el que puedes confiar.
Números y texto
- El módulo mathMatemática entera exacta, matemática flotante cuidadosa, y las constantes.
- El módulo randomPseudoaleatoriedad con semilla para simulaciones — nunca para secretos.
- Especificaciones de formatoEl minilenguaje que comparten los f-strings, format y __format__.
Errores a fondo
- La jerarquía de excepcionesAtrapa la clase más estrecha que cubra lo que de verdad puedes manejar.
- else y finallyCuatro bloques, cuatro trabajos: try, except, else para el éxito, finally para limpiar.
- Modos de archivoLectura, escritura, append, exclusivo y binario — y qué destruye cada uno.
Expresiones
- El operador walrusAsignar dentro de una expresión, cuando el valor se necesita dos veces.
- Desempaquetado, a fondoObjetivos con estrella, formas anidadas y desempaquetar en llamadas.
- Comparaciones y valores de verdadComparaciones encadenadas, identidad contra igualdad, y qué cuenta como falso.
Bis
- fetch_json.pyConsultar una API JSON e imprimirla con formato, sin dependencias.
- word_freq.pyUna herramienta CLI completa: leer un archivo, contar palabras, imprimir un reporte.
- todo_cli.pyUna lista de pendientes CLI completa que persiste en JSON.
- grep_lite.pyUn grep mínimo: hallar líneas que coinciden con un patrón en varios archivos.
- csv_stats.pyEstadísticas de resumen para una columna CSV, solo con la stdlib.