Компания по производству видеоигр ежемесячно публикует на своем сайте несколько бесплатных игр. Вы хотите создать скрипт, который будет уведомлять вас о релизах. Но игры выходят без привязки к датам: они появляются на сайте в первый вторник месяца.
Напишите функцию, которая будет принимать год и номер месяца и возвращать строку с датой, когда станут доступны новые игры.
Примечание: месяцы считаем по порядку, 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]