Python: último día hábil de cada mes del año

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *