2016-05-28 8 views

答えて

1

あなたは月の日数をループし、そのN番目の平日に遭遇してきたかをカウントすることで、これを計算することができます。たとえば

import datetime 

def get_n_weekday(year, month, day_of_week, n): 
    count = 0 
    for i in xrange(1, 32): 
     try: 
      d = datetime.date(year, month, i) 
     except ValueError: 
      break 
     if d.isoweekday() == day_of_week: 
      count += 1 
     if count == n: 
      return d 
    return None 

:ある2016年1月のget_n_weekday(2016, 1, 1, 1) =最初の月曜日datetime.date(2016, 1, 4)

これは月曜日が1であることを意味しdate.isoweekday()を使用して、日曜日はシメオンの答えより7

+0

あなたの解決策は正しいですが、私は2つの単純な解決策を見つけました。 。 – user1802693

0

さらに二つの単純ソリューションです:

def f1(day_of_month): 
    ret = None  
    if (day_of_month % 7 == 0): 
     ret = day_of_month/7 
    else: 
     ret = (day_of_month//7) + 1 
    return ret  


def f2(day_of_month): 
    actual_day = day_of_month 
    counter = 0 
    while actual_day > 0: 
     actual_day = actual_day - 7 
     counter = counter + 1 
    return counter 
関連する問題