Компания по производству видеоигр ежемесячно публикует на своем сайте несколько бесплатных игр. Вы хотите создать скрипт, который будет уведомлять вас о релизах. Но игры выходят без привязки к датам: они появляются на сайте в первый вторник месяца.
Напишите функцию, которая будет принимать год и номер месяца и возвращать строку с датой, когда станут доступны новые игры.
Примечание: месяцы считаем по порядку, 1 = январь.
Примеры
first_tuesday_of_the_month(1997, 1) ➞ "1997-01-07" first_tuesday_of_the_month(2021, 2) ➞ "2021-02-02" first_tuesday_of_the_month(2020, 3) ➞ "2020-03-03"
Варианты решения
from datetime import date def first_tuesday_of_the_month(year, month): for day in range(1, 8): if date(year, month, day).weekday() == 1: return date(year, month, day).isoformat()
import calendar def first_tuesday_of_the_month(year, month): m = calendar.monthrange(year, month)[0] d = {0: 2, 1: 1, 2: 7, 3: 6, 4: 5, 5: 4, 6: 3} return '{}-{:02d}-{:02d}'.format(year, month, d[m])
import datetime from datetime import date def first_tuesday_of_the_month(year, month): day = 1 born = datetime.date(year, month, day) while born.strftime("%A") != "Tuesday": born = datetime.date(year, month, day) day += 1 return "{}-{}-{}".format(year, str(month).zfill(2), str(day - 1).zfill(2) if day > 1 else \ str(day).zfill(2))
import datetime def first_tuesday_of_the_month(year, month): d = datetime.datetime(year, month, 1) offset = 1 - d.weekday() if offset < 0: offset += 7 day = str(d + datetime.timedelta(offset)) return day[0:10]