Explicación del concepto
Esta lección une las primeras lecciones de configuración en un script pequeño y completo. Ya practicaste ejecutar archivos, corregir sintaxis, depurar errores, refactorizar, probar funciones auxiliares simples y separar datos de la presentación. Ahora aplicarás esos hábitos en un solo lugar. El script de esta lección sigue siendo pequeño a propósito. Eso es lo que lo hace útil. Un proyecto para principiantes debe ser fácil de ejecutar, fácil de leer y fácil de modificar sin temor. Si un compañero de equipo abriera este archivo mañana, debería entender lo que hace en menos de un minuto. Aquí, construirás un pequeño formateador de perfiles que crea registros de muestra, verifica que los datos sean razonables e imprime una salida limpia. Nada sofisticado. Solo un script que se siente como un mini proyecto real en lugar de un ejercicio desconectado. Al final de esta lección, deberías poder: • explicar cómo la creación, validación y renderizado de datos funcionan juntos en un solo archivo, • ejecutar un mini proyecto de principio a fin sin adivinar qué sucede después, • señalar el lugar exacto donde se añadirían futuras características como argumentos de línea de comandos o exportación JSON. Por qué esto importa: el aprendizaje real ocurre cuando los conceptos separados dejan de sentirse separados y comienzan a trabajar juntos en un solo programa.
Dónde poner el código
- Define variables de color y posición al principio.
- Crea la lógica de dibujo o posicionamiento de formas en el medio.
- Renderiza la salida (impresión, canvas, SVG o bloque con estilo) al final.
Referencia de comandos
- Mantén el docstring del módulo práctico para que otra persona sepa cómo ejecutar el archivo de inmediato.
- Usa una pequeña función de validación antes de imprimir para que los datos obviamente incorrectos fallen temprano.
- Haz que `render_profile()` devuelva un string; eso mantiene el formato fácil de probar y reutilizar.
- Trata a `main()` como el paso de ensamblaje final donde el proyecto se une.
Guía paso a paso
- Ejecuta el script exactamente como indica el docstring superior y confirma que cada perfil se imprime en su propia línea.
- Añade un perfil más y verifica si la regla de oro-versus-estándar sigue comportándose como esperas.
- Asigna temporalmente una puntuación negativa a un perfil, lee el mensaje de aserción y luego restaura los datos.
- Cambia el formato en `render_profile()` sin tocar `build_profiles()` ni `validate_profiles()`.
- Escribe una frase describiendo dónde añadirías argumentos de línea de comandos si quisieras que este proyecto aceptara entrada real más adelante.
Ejercicios prácticos
- Compara esta versión basada en dataclass con la lección de TypedDict anterior. ¿Cuál te parece más limpia para un proyecto pequeño y por qué?
- Añade una función que devuelva el perfil con la puntuación más alta sin cambiar cómo funciona el renderizado.
- Escribe una nota breve explicando por qué la validación debe ir antes del bucle de impresión, no después.
Retos de código
- Añade una función de exportación JSON que convierta los perfiles en diccionarios manteniendo el renderizador de texto sin cambios.
- Ordena los perfiles por puntos antes de imprimir y asegúrate de que el resto del archivo se siga leyendo de forma limpia.
Mini tareas de práctica
- Guarda este archivo como un mini proyecto personal, no solo como un ejercicio de lección.
- Escribe una línea en tus notas: este es el primer script donde varias ideas de Python trabajan juntas.
- Lee el archivo de principio a fin una vez sin ejecutarlo y verifica si el flujo se siente obvio.
Error común
Mixing x and y axes or using wrong coordinate origin causes shapes to appear in unexpected places.
Mini reto de la vida real
Draw one square, one triangle, and one circle, then move X marker 2 steps right and 1 step down.