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

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

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

Recent Posts

10 удалённых Python-вакансий

Если вы ищете работу на Python, на Talanto.work сейчас есть варианты для junior, middle, senior…

6 месяцев ago

Где искать Python-вакансии в 2026 году: зачем на Talanto.work появился отдельный сценарий поиска

Рынок Python-вакансий большой, но удобным его назвать сложно. Формально вакансий много, однако в реальном поиске…

6 месяцев ago

Срезы в Python со всеми подробностями

Срезы в Python — это больше, чем a[2:7]. В статье — быстрый разбор полезных приёмов:…

8 месяцев ago

Возведение в степень в Python: полное руководство

В этой статье мы рассмотрим возведение в степень в Python с помощью различных методов, от…

9 месяцев ago

Как удалить дубликаты из списка Python?

Дубликаты в списке Python — частая проблема. В статье показано, как быстро убрать повторы, в…

9 месяцев ago

Виртуальный (shared) хостинг от SpaceWeb: технический обзор

Услуга виртуального хостинга на SpaceWeb позволяет арендовать часть сервера (shared-сервера) и разместить на нём свой…

11 месяцев ago