Programa de Python para contar la fecha en un día de la semana en particular en un rango dado de años

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

Deja una respuesta

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