Dado un año y un número de día de la semana, la tarea es escribir un programa Python para extraer cada fecha del mes correspondiente al día de la semana.
Entrada: año = 1997, semana = 5
Salida: [’25/1/1997′, ’22/2/1997′, ’29/3/1997′, ’26/4/1997′, ’31/5/1997′, ’28/6/1997′ , ’26/7/1997′, ’30/8/1997′, ’27/9/1997′, ’25/10/1997′, ’29/11/1997′, ’27/12/1997′]
Explicación: 5 es viernes. El último día de la semana de enero de 1997, que es el viernes, es el 25.
Entrada: año = 1996, semana = 4
Salida: [’26/1/1996′, ’23/2/1996′, ’29/3/1996′, ’26/4/1996′, ’31/5/1996′, ’28/6/1996′ , ’26/7/1996′, ’30/8/1996′, ’27/9/1996′, ’25/10/1996′, ’29/11/1996′, ’27/12/1996′]
Explicación: 4 es jueves. El último día de la semana de enero de 1997, que es el jueves, es el 26.
Método #1: Usando loop + max() + calendar.monthcalendar
En esto, realizamos la tarea de obtener el calendario de cada mes usando monthcalendar() de la biblioteca de calendarios . Cada día de la semana se extrae la fecha y el máximo de la misma, siendo el máximo de todo el mes el último día de la semana, por lo tanto se extrae.
Python3
# Python3 code to demonstrate working of # Last weekday of every month in year # Using loop + max() + calendar.monthcalendar import calendar # initializing year year = 1997 # printing Year print("The original year : " + str(year)) # initializing weekday weekdy = 5 # iterating for all months res = [] for month in range(1, 13): # max gets last friday of each month of 1997 res.append(str(max(week[weekdy] for week in calendar.monthcalendar(year, month))) + "/" + str(month)+ "/" + str(year)) # printing print("Last weekdays of year : " + str(res))
Producción:
El año original: 1997
Últimos días laborables del año: [’25/1/1997′, ’22/2/1997′, ’29/3/1997′, ’26/4/1997′, ’31/5/1997′, ’28/6 /1997′, ’26/7/1997′, ’30/8/1997′, ’27/9/1997′, ’25/10/1997′, ’29/11/1997′, ’27/12/1997 ′]
Método #2: Usar la comprensión de listas
Similar al método anterior, la única diferencia es el uso de la comprensión de listas para una solución compacta.
Python3
# Python3 code to demonstrate working of # Last weekday of every month in year # Using list comprehension import calendar # initializing year year = 1997 # printing Year print("The original year : " + str(year)) # initializing weekday weekdy = 5 # list comprehension for shorthand res = [str(max(week[weekdy] for week in calendar.monthcalendar(year, month))) + "/" + str(month)+ "/" + str(year) for month in range(1, 13)] # printing print("Last weekdays of year : " + str(res))
Producción:
El año original: 1997
Últimos días laborables del año: [’25/1/1997′, ’22/2/1997′, ’29/3/1997′, ’26/4/1997′, ’31/5/1997′, ’28/6 /1997′, ’26/7/1997′, ’30/8/1997′, ’27/9/1997′, ’25/10/1997′, ’29/11/1997′, ’27/12/1997 ′]
Publicación traducida automáticamente
Artículo escrito por manjeet_04 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA