Первый вторник месяца

Компания по производству видеоигр ежемесячно публикует на своем сайте несколько бесплатных игр. Вы хотите создать скрипт, который будет уведомлять вас о релизах. Но игры выходят без привязки к датам: они появляются на сайте в первый вторник месяца.

Напишите функцию, которая будет принимать год и номер месяца и возвращать строку с датой, когда станут доступны новые игры.

Примечание: месяцы считаем по порядку, 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]
Прокрутить вверх