Diferències
Ací es mostren les diferències entre la revisió seleccionada i la versió actual de la pàgina.
| info:cursos:netacad:python:pe2m4:biblioteca:calendar [07/07/2022 08:27] – creat mate | info:cursos:netacad:python:pe2m4:biblioteca:calendar [07/07/2022 13:53] (actual) – mate | ||
|---|---|---|---|
| Línia 13: | Línia 13: | ||
| La información anterior te resultará útil cuando trabajes con el módulo // | La información anterior te resultará útil cuando trabajes con el módulo // | ||
| - | https://edube.org/learn/python-essentials-2-esp/el-m-oacute-dulo-calendar-1 | + | == Tu primer calendario |
| + | Comenzarás tu aventura con el módulo calendar con una función simple llamada calendar, que te permite **mostrar el calendario para todo el año**. Veamos cómo usarlo para mostrar el calendario de 2020. Ejecuta el código en el editor y ve qué sucede. | ||
| + | |||
| + | El resultado mostrado es similar al resultado del comando cal disponible en Unix. Si deseas cambiar el formato de calendario predeterminado, | ||
| + | * w: ancho de la columna de fecha (por defecto 2) | ||
| + | * l: número de líneas por semana (por defecto 1) | ||
| + | * c: número de espacios entre las columnas del mes (por defecto 6) | ||
| + | * m: número de columnas (por defecto 3) | ||
| + | |||
| + | La función de calendario requiere que se especifique el año, mientras que los otros parámetros responsables del formato son opcionales. Te recomendamos que pruebes estos parámetros tu mismo. | ||
| + | |||
| + | Una buena alternativa a la función anterior es la función llamada prcal, que también toma los mismos parámetros que la función calendar, pero no requiere el uso de la función print para mostrar el calendario. Su uso se ve así: | ||
| + | <code python> | ||
| + | import calendar | ||
| + | calendar.prcal(2020) | ||
| + | </code> | ||
| + | |||
| + | == Calendario para un mes específico | ||
| + | El módulo | ||
| + | |||
| + | <code python> | ||
| + | import calendar | ||
| + | print(calendar.month(2020, | ||
| + | </code> | ||
| + | |||
| + | El ejemplo muestra el calendario de Noviembre de 2020. Al igual que en la función | ||
| + | * w: ancho de la columna de fecha (por defecto 2) | ||
| + | * l: número de líneas por semana (por defecto 1) | ||
| + | |||
| + | Nota: También puedes utilizar la función // | ||
| + | |||
| + | == La función setfirstweekday() | ||
| + | Como ya sabes, por defecto en el módulo // | ||
| + | |||
| + | ¿Recuerdas la tabla que muestra los días de la semana y su representación en forma de valores enteros? Es hora de usarla, porque el método // | ||
| + | |||
| + | < | ||
| + | import calendar | ||
| + | |||
| + | calendar.setfirstweekday(calendar.SUNDAY) | ||
| + | calendar.prmonth(2020, | ||
| + | |||
| + | </ | ||
| + | |||
| + | El ejemplo usa la constante // | ||
| + | |||
| + | Como resultado, obtenemos un calendario que muestra el mes de Diciembre de 2020, en el que el primer día de todas las semanas es el Domingo. | ||
| + | |||
| + | == La función weekday() | ||
| + | Otra función útil proporcionada por el módulo // | ||
| + | |||
| + | Ejecuta el código en el editor para verificar el día de la semana en que cae el 24 de Diciembre de 2020. | ||
| + | <code python> | ||
| + | import calendar | ||
| + | print(calendar.weekday(2020, | ||
| + | </ | ||
| + | Resultado: | ||
| + | < | ||
| + | |||
| + | La función //weekday// devuelve 3, lo que significa que el 24 de Diciembre del 2020 es Jueves. | ||
| + | |||
| + | == La función weekheader() | ||
| + | Probablemente hayas notado que el calendario contiene encabezados semanales en forma abreviada. Si es necesario, puedes obtener nombres cortos de días de la semana utilizando el método // | ||
| + | |||
| + | El método // | ||
| + | |||
| + | Entonces, veamos cómo obtener un encabezado más pequeño. | ||
| + | |||
| + | <code python> | ||
| + | import calendar | ||
| + | print(calendar.weekheader(2)) | ||
| + | </code> | ||
| + | |||
| + | Resultado: | ||
| + | |||
| + | Mo Tu We Th Fr Sa Su | ||
| + | salida | ||
| + | |||
| + | Nota: Si cambias | ||
| + | |||
| + | == ¿Cómo comprobamos si un año es bisiesto? | ||
| + | El módulo // | ||
| + | |||
| + | La primera, llamada //isleap//, devuelve True si el año pasado es bisiesto, o False de lo contrario. El segundo, llamado // | ||
| + | |||
| + | <code python> | ||
| + | import calendar | ||
| + | |||
| + | print(calendar.isleap(2020)) | ||
| + | print(calendar.leapdays(2010, | ||
| + | </ | ||
| + | |||
| + | Resultado: | ||
| + | < | ||
| + | True | ||
| + | 3 | ||
| + | </ | ||
| + | |||
| + | En el ejemplo, obtenemos el resultado 3, porque en el período de 2010 a 2020 solo hay tres años bisiestos (nota: 2021 no está incluido). Son los años 2012, 2016 y 2020. | ||
| + | |||
| + | == Clases para crear calendarios | ||
| + | Las funciones que hemos mostrado hasta ahora no son todo lo que ofrece el módulo // | ||
| + | * calendar.Calendar: | ||
| + | * calendar.TextCalendar: | ||
| + | * calendar.HTMLCalendar: | ||
| + | * calendar.LocalTextCalendar: | ||
| + | * calendar.LocalHTMLCalendar: | ||
| + | |||
| + | Durante este curso, ya tuviste la oportunidad de crear calendarios de texto al discutir las funciones del módulo // | ||
| + | |||
| + | Es hora de probar algo nuevo. Echemos un vistazo más de cerca a los métodos de la clase calendar. | ||
| + | |||
| + | {{ : | ||
| + | |||
| + | == Creación de un objeto Calendar | ||
| + | El constructor de la clase // | ||
| + | |||
| + | El parámetro // | ||
| + | |||
| + | <code python> | ||
| + | import | ||
| + | |||
| + | c = calendar.Calendar(calendar.SUNDAY) | ||
| + | |||
| + | for weekday in c.iterweekdays(): | ||
| + | print(weekday, | ||
| + | |||
| + | </ | ||
| + | |||
| + | El programa generará el siguiente resultado: | ||
| + | < | ||
| + | 6 0 1 2 3 4 5 | ||
| + | </ | ||
| + | |||
| + | El ejemplo de código usa el método de la clase // | ||
| + | |||
| + | El primer valor devuelto siempre es igual al valor de la propiedad // | ||
| + | |||
| + | == El método itermonthdates() | ||
| + | La clase // | ||
| + | |||
| + | Como resultado, se devuelven todos los días del mes y año especificados, | ||
| + | |||
| + | Cada día está representado por un objeto // | ||
| + | |||
| + | <code python> | ||
| + | import calendar | ||
| + | |||
| + | c = calendar.Calendar() | ||
| + | |||
| + | for date in c.itermonthdates(2019, | ||
| + | print(date, end=" ") | ||
| + | |||
| + | </ | ||
| + | |||
| + | El código muestra todos los días de Noviembre de 2019. Debido a que el primer día de Noviembre de 2019 fue Viernes, los siguientes días también se devuelven para obtener la semana completa: 28/10/2019 (Lunes) 29/10/2019 (Martes ) 30/10/2019 (Miércoles) 31/10/2019 (Jueves). | ||
| + | |||
| + | El último día de Noviembre de 2019 fue Sábado, por lo que para mantener la semana completa, se devuelve un día más el 12/01/2019 (Viernes). | ||
| + | |||
| + | == Otros métodos que devuelven iteradores | ||
| + | Otro método útil en la clase Calendar es el método llamado // | ||
| + | |||
| + | <code python> | ||
| + | import calendar | ||
| + | |||
| + | c = calendar.Calendar() | ||
| + | |||
| + | for iter in c.itermonthdays(2019, | ||
| + | print(iter, end=" ") | ||
| + | |||
| + | </ | ||
| + | |||
| + | Sin duda habrás notado la gran cantidad de ceros devueltos como resultado del código de ejemplo. Estos son días fuera del intervalo de meses especificado que se agregan para mantener la semana completa. | ||
| + | |||
| + | Los primeros cuatro ceros representan el 28/10/2019 (Lunes) el 29/10/2019 (Martes) el 30/10/2019 (Miércoles) el 31/10/2019 (Jueves). Los números restantes son días del mes, excepto el último valor de 0, que reemplaza la fecha 12/01/2019 (Domingo). | ||
| + | |||
| + | Hay otros cuatro métodos similares en la clase // | ||
| + | * itermonthdates2: | ||
| + | * itermonthdates3: | ||
| + | * itermonthdates4: | ||
| + | |||
| + | Con fines de prueba, utiliza el ejemplo anterior y ve cómo se ven en la práctica los valores de retorno de los métodos descritos. | ||
| + | |||
| + | == El método monthdays2calendar() | ||
| + | La clase // | ||
| + | |||
| + | Uno de ellos es el método // | ||
| + | |||
| + | <code python> | ||
| + | import calendar | ||
| + | |||
| + | c = calendar.Calendar() | ||
| + | |||
| + | for data in c.monthdays2calendar(2020, | ||
| + | print(data) | ||
| + | </ | ||
| + | |||
| + | Toma en cuenta que los números de los días fuera del mes están representados por 0, mientras que los números de los días de la semana son un número del 0 al 6, donde 0 es el Lunes y 6 es el Domingo. | ||
| + | |||
| + | En un momento, este método puede resultar útil para completar una tarea de laboratorio. ¿Estás listo? | ||
| + | |||
| + | == Puntos Claves | ||
| + | 1. En el módulo calendar, los días de la semana se muestran de Lunes a Domingo. Cada día de la semana tiene su representación en forma de número entero, donde el primer día de la semana (Lunes) está representado por el valor 0, mientras que el último día de la semana (Domingo) está representado por el valor 6. | ||
| + | |||
| + | 2. Para mostrar un calendario de cualquier año, se emplea la función // | ||
| + | <code python> | ||
| + | import calendar | ||
| + | print(calendar.calendar(2020)) | ||
| + | </ | ||
| + | |||
| + | Nota: Una buena alternativa a la función anterior es la función llamada //prcal//, que también toma los mismos parámetros que la función calendar, pero no requiere el uso de la función print para mostrar el calendario. | ||
| + | |||
| + | |||
| + | 3. Para mostrar un calendario de cualquier mes del año, se emplea la función //month//, pasándole el año y el mes. Por ejemplo: | ||
| + | <code python> | ||
| + | import calendar | ||
| + | print(calendar.month(2020, | ||
| + | </ | ||
| + | |||
| + | Nota: También puedes usar la función // | ||
| + | |||
| + | |||
| + | 4. La función // | ||
| + | |||
| + | |||
| + | 5. El resultado de la función //weekday// es un día de la semana como un valor entero para un año, mes y día determinados: | ||
| + | <code python> | ||
| + | import calendar | ||
| + | print(calendar.weekday(2020, | ||
| + | </ | ||
| + | |||
| + | |||
| + | 6. La función // | ||
| + | <code python> | ||
| + | import calendar | ||
| + | print(calendar.weekheader(2)) # Esto muestra: Mo Tu We Th Fr Sa Su | ||
| + | </ | ||
| + | |||
| + | |||
| + | 7. Una función muy útil disponible en el módulo // | ||
| + | <code python> | ||
| + | import calendar | ||
| + | print(calendar.isleap(2020)) # Esto muestra: True | ||
| + | </ | ||
| + | |||
| + | |||
| + | 8. Puedes crear un objeto calendar tu mismo usando la clase // | ||
| + | <code python> | ||
| + | import calendar | ||
| + | |||
| + | c = calendar.Calendar(2) | ||
| + | |||
| + | for weekday in c.iterweekdays(): | ||
| + | print(weekday, | ||
| + | # Resultado: 2 3 4 5 6 0 1 | ||
| + | </ | ||
| + | |||
| + | // | ||
| + | |||
| + | |||
| + | |||
| + | |||