Curso Avanzado de Desarrollo en Python
Capítulo
>
Nivel
Módulos de Cadenas y Tiempo
Módulo de Calendario
Objetivo
Revisa el calendario y establece fechas para algunos de los plazos de entrega utilizando el módulo Calendar.
Hay varios envíos que han llegado y cronogramas que deben cumplirse para que puedan distribuirse en la nueva construcción de la granja. Anteriormente usábamos el módulo date para configurar etiquetas de envío; aquí vamos a configurar cronogramas usando el módulo calendar. Para aprovechar las clases y funciones del módulo, utiliza import calendar para importar todos los materiales relevantes.
Para nuestros propósitos, usaremos las siguientes funciones del módulo calendar:
calendar.calendar():Muestra el calendario completo del año, toma un (1) argumento, que es el año que deseas mostrar.calendar.month():Muestra un calendario para un solo mes, toma dos (2) argumentos, el año y el mes.calendar.isleap():Verifica si un año es bisiesto, toma un (1) argumento, que es el año a verificar.calendar.leapdays():Verifica la cantidad de días bisiestos acumulados a lo largo de los años, toma dos (2) argumentos que representan los años que comprenden el período que deseas verificar.itermonthdays():Utiliza la claseCalendar(), itera a través de todos los días del mes, toma dos argumentos, el año y el mes.itermonthdates():Utiliza la claseCalendar(), itera a través de todas las fechas del mes, toma dos argumentos, el año y el mes.monthdayscalendar():Utiliza la claseCalendar(), itera a través de todas las semanas del mes, toma dos argumentos, el año y el mes. Almacena los datos en una lista anidada.monthdays2calendar():Igual que la función anterior pero almacena semanas y días juntos en una lista bidimensional.
Para comenzar, dirígete a la marca X dorada y revisa el calendario, crea una variable llamada cal y almacena el valor de calendar.calendar() y añade el año 2026 como argumento, de esta manera: cal = calendar.calendar(2026). Utiliza la función display() para mostrar la variable cal que acabas de configurar.
Después de revisar y mostrar el calendario, dirígete a la marca X clara y revisa la hoja de cálculo sobre el escritorio. Utiliza la función read() para revisar el memorando de la fecha programada del suministro. Crea dos variables, una llamada year y otra llamada month, y asígnales la información que has leído.
Crea una variable llamada calendar_month y almacena el valor de la función calendar.month() utilizando las variables year y month como argumentos. Utiliza la función display() para mostrar el mes del calendario que se usará para establecer los cronogramas de distribución.
Dirígete a la marca X oscura sobre la alfombra verde, aquí anotaremos algunos puntos de datos para asegurarnos de que los cronogramas no se desplacen. Crea dos variables, una llamada leap_year y otra leap_days. Para la variable leap_year, almacena el resultado de calendar.isleap() y establece 2026 como argumento. Esto te permitirá verificar si el año actual del proyecto es bisiesto. Para la variable leap_days, almacena el valor de calendar.leapdays() y añade los valores: 2020 y 2027 como argumentos. Esto verifica la cantidad de días bisiestos que han ocurrido a lo largo de toda la duración del proyecto. Utiliza la función pre-escrita write() y añade leap_year y leap_days para registrar los datos.
Dirígete a la marca X oscura sobre la alfombra roja y frente al escritorio, aquí delinearemos el cronograma del mes. Crea una variable llamada date y almacena el valor de calendar.Calendar(), esto crea un objeto de clase al que podremos hacer referencia más adelante. Crea otra variable llamada day_roster y asígnale una cadena vacía, de esta manera: day_roster = "".
Pre-escrito en el editor hay un bucle for que itera a través del calendario y delimita las fechas. Utiliza la función itermonthdays() y añade las variables year y month que creaste anteriormente como argumentos. Añade los elementos faltantes según sea necesario para sumar el listado.
for day in dates.itermonthdays(-insert value-, -insert value-): entry = "Day: %s \n" % (day) day_roster += entry
Una vez configurado el bucle, procede a crear una duplicación de este bucle; sin embargo, reemplaza la función itermonthdays() con itermonthdates() y añade las variables year y month como argumentos. Para la variable entry, haz que registre los datos de la siguiente manera: entry = "%s \n" % (day). Estos nos darán las fechas completas de la duración del proyecto. Utiliza la función pre-escrita display() con la variable day_roster para mostrar el listado completo de días del proyecto en el calendario.
Dirígete a la marca X oscura sobre la alfombra azul y frente al memorando, aquí configuraremos las semanas de seguimiento del proyecto catalogadas en listas. Crea una variable llamada weeks y almacena el valor de calendar.Calendar(), esto crea un objeto de clase al que podemos hacer referencia con las funciones. Toma la variable month y reemplaza su valor por 7 para avanzar en el cronograma con el que estamos trabajando, de esta manera: month = 7.
Crea una variable llamada week_roster y asígnale una cadena vacía, de esta manera: week_roster = "". Pre-escrito en el editor hay un bucle for que itera a través del calendario y delimita los días de la semana. Utiliza la función monthdayscalendar() y añade las variables year y month que creaste anteriormente como argumentos. Añade los elementos faltantes según sea necesario para sumar el listado.
for day in weeks.monthdayscalendar(-insert value-, -insert value-): entry = "%s \n" % (day) week_roster += entry
Una vez configurado el bucle, procede a crear una duplicación de este bucle; sin embargo, reemplaza la función monthdayscalendar() con monthdays2calendar() y añade las variables year y month como argumentos. Esto nos dará las fechas completas de la duración del proyecto. Utiliza la función pre-escrita display() con la variable week_roster para mostrar el listado completo de días hábiles del proyecto en el calendario, a fin de completar el nivel.