Dada una fecha, nuestra tarea es obtener el índice de días de la semana y el rango de años, calcular la ocurrencia total de la fecha en un día de la semana en particular en el rango de años.
Ejemplo:
Entrada: fecha = 13, semana = 5, strt, fin = 1950, 2020
Salida : 120
Explicación: el total de fechas con el viernes 13 de 1950 a 2020 es 120.
Entrada: fecha = 13, semana = 1, strt, fin = 1950, 2050
Salida : 173
Explicación: el total de fechas con el lunes 13 de 1950 a 2050 es 173.
Método 1: Usar bucle + día de la semana()
En esto, ejecutamos un ciclo anidado desde el año de inicio hasta el final del año y dentro de cada año, cada mes se verifica con una fecha para que sea el día de la semana exacto según sea necesario, si se encuentra, el contador se incrementa.
Python3
# Python3 code to demonstrate working of # Count date on weekday in Year Range # Using loop + weekday() from datetime import datetime # initializing date date = 13 # initializing weekday weekdy = 5 # initializing range of Years strt, end = 1950, 2020 # printing Number print("The date, weekday : " + str(date) + " " + str(weekdy)) res = 0 for year in range(strt, end + 1): # checking each month for same date # weekday combination for month in range(1, 13): if datetime(year, month, date).weekday() == weekdy: res += 1 # printing result print("Total dates with same weekday : " + str(res))
Producción:
The date, weekday : 13 5 Total dates with same weekday : 120
Método 2: Usar sum() + expresión generadora
Similar al método anterior, la única diferencia es que la expresión del generador se usa para la tarea de un ciclo anidado, sum() realiza la tarea de sumar la combinación correcta de año y mes encontrada.
Python3
# Python3 code to demonstrate working of # Count date on weekday in Year Range # Using sum() + generator expression from datetime import datetime # initializing date date = 13 # initializing weekday weekdy = 5 # initializing range of Years strt, end = 1950, 2020 # printing Number print("The date, weekday : " + str(date) + " " + str(weekdy)) # sum performs accumulation res = sum(datetime(year, month, date).weekday() == weekdy for year in range(strt, end + 1) for month in range(1, 13)) # printing result print("Total dates with same weekday : " + str(res))
Producción:
The date, weekday : 13 5 Total dates with same weekday : 120
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