17  Proyecto: ejercicio-funciones

Objetivo

Construir un proyecto en Python con uv que incluya:

  • Dos notebooks (001_desarrollo_funciones.ipynb y 002_uso_funciones.ipynb).
  • Un paquete externo desde GitHub (iertools).
  • Un pequeño módulo de utilidades con funciones tipadas para conteo de cadenas .

Estructura mínima

ejercicio-funciones/
├─ pyproject.toml
├─ data/
├─ notebooks/
│  ├─ 001_desarrollo_funciones.ipynb
│  ├─ 002_uso_funciones.ipynb
│  └─ herramientas/
│     ├─ cadenas.py
└─ pdfs/

Dependencias requeridas

  • Paquete externo: iertools (desde GitHub).
  • pandas, matplotlib, windrose y calplot desde PyPi

Especificación de funciones

A) notebooks/herramientas/cadenas.py

Implementa funciones tipadas y con docstrings:

  1. contar_letras_unicas(texto: str, *, ignorar_acentos: bool = True) -> int

    • Convierte a minúsculas, opcionalmente normaliza acentos, ignora puntuación y devuelve el número de letras distintas.

001_desarrollo_funciones.ipynb

002_uso_funciones.ipynb

  • Importación desde notebooks/herramientas/.
  • Demostración de uso con ejemplos reales.

Entregables

  • Estructura de proyecto requerida.
  • requirements.txt con windrose y calplot.
  • notebooks/herramientas/cadenas.py y notebooks/herramientas/numeros.py con tipado y docstrings.
  • 001_desarrollo_funciones.ipynb con pruebas.
  • 002_uso_funciones.ipynb con ejemplos y verificación de dependencias.