Sistema de consola en Python para gestionar un canódromo: registro de perros, generación de carreras con simulación de velocidades y un panel estadístico con gráficos. Proyecto académico enfocado en Programación Orientada a Objetos y análisis de datos.
- Registro de perros con validación de datos (nombre, pista, raza, velocidad base).
- Dos tipos de competidor (
Perro_Mediano,Perro_Grande) con cálculo de velocidad diferenciado. - Generación de carreras: simula la velocidad final de cada perro, ordena por distancia y determina al ganador.
- Persistencia en CSV: perros y carreras se guardan y se recargan entre sesiones.
- Panel estadístico con
matplotlib: velocidad promedio, distancia máxima, victorias por perro y porcentaje de victorias.
| Concepto | Dónde |
|---|---|
| Abstracción | Clase abstracta Perro(ABC) con @abstractmethod calcular_velocidad_final() |
| Herencia | Perro_Mediano y Perro_Grande heredan de Perro |
| Encapsulamiento | Atributos privados con @property y setters |
| Polimorfismo | Cada raza redefine el cálculo de velocidad (super() + override) |
| Composición | Canodromo gestiona listas de Perro y Carrera |
- Python 3.10+ (usa
match/case) - pandas — lectura/escritura de CSV y agregaciones (
groupby,iterrows) - matplotlib — visualización de estadísticas
CanoTrack/
├── canodromo.py # Aplicación (clases + menú de consola)
├── archivo_perros.csv # Datos persistentes de perros
├── archivo_carreras.csv # Datos persistentes de carreras
└── README.md
# 1) Instalar dependencias
pip install pandas matplotlib
# 2) Ejecutar
python canodromo.pyAl iniciar verás un menú:
1. Registrar perros al sistema
2. Mostrar perros registrados
3. Registrar y generar carrera
4. Mostrar información de carrera específica
5. Mostrar todos los gráficos de carreras y perros 📈
6. Mostrar carreras registradas
7. Salir
La opción 5 abre un panel con cuatro gráficos (matplotlib): velocidad promedio
por perro, distancia máxima alcanzada, victorias por perro y porcentaje de victorias.
Proyecto desarrollado en el marco del curso de Programación Orientada a Objetos. Publicado como parte de mi portafolio académico.
Yeremi Tanner Villavicencio Ríos · github.com/yeremivr