Подсчет количества определенных дней недели в диапазоне дат в Python
В Python скрипте ниже мы рассмотрим как подсчитать количества определенных дней недели в диапазоне дат в Python. Где это может понадобиться? Допустим, Вы получаете некий доход 2 раза в неделю каждый месяц в году. С помощью данного простого скрипта Вы сможете рассчитать доход за каждый месяц. Пример, хоть и надуманный, но позволит Вам поработать с датой и временем в Python, динамическим формированием стандартной структуры данных - словаря - dict, консольным вводом и выводом.
Файл work_automation.py
# импортируем классы для работы с датой и промежутком дат
from datetime import date, timedelta
# возвращает словарь месяц - период времени
def get_work_months(year):
return {
'ЯНВАРЬ': (year - 1, 12, year, 1),
'ФЕВРАЛЬ': (year, 1, year, 2),
'МАРТ': (year, 2, year, 3),
'АПРЕЛЬ': (year, 3, year, 4),
'МАЙ': (year, 4, year, 5),
'ИЮНЬ': (year, 5, year, 6),
'ИЮЛЬ': (year, 6, year, 7),
'АВГУСТ': (year, 7, year, 8),
'СЕНТЯБРЬ': (year, 8, year, 9),
'ОКТЯБРЬ': (year, 9, year, 10),
'НОЯБРЬ': (year, 10, year, 11),
'ДЕКАБРЬ': (year, 11, year, 12),
}
# получаем количество интересующих нас дней недели в месяце
def get_weekdays_count(from_year, from_month, to_year, to_month):
# дни недели по умолчанию начинаются с нуля
TUESDAY = 1 # ищем вторник
THURSDAY = 3 # и четверг, к примеру
calc_day = 23 # период расчета
# создаем объекты даты
from_date = date(from_year, from_month, calc_day)
to_date = date(to_year, to_month, calc_day)
# создаем генератор для всех дней из диапазона
daygen = [from_date + timedelta(day + 1) for day in range((to_date - from_date).days)]
# подсчитываем количество вторников и четвергов в диапазоне
days = sum(1 for day in daygen if day.weekday() in [TUESDAY, THURSDAY])
return days
файл main.py
# импортируем модули нашей программы
from work_automation import get_work_months, get_weekdays_count
# точка запуска файла
if __name__ == '__main__':
year_input = input('Введите год: ')
work_year = get_work_months(int(year_input))
print('\nКоличество вторников и четвергов в периоде:\n')
for month_name in work_year:
work_period = work_year[month_name]
# разворачиваем кортеж (неизменяемый список) в отдельные переменные
work_days_count = get_weekdays_count(*work_period)
print(f'{month_name} = {work_days_count}')
Таким образом, используя встроенные в Python модули мы можем быстро создавать простые скрипты для выполнения различных рутинных операций.
Кстати, если Вам много чего не понятно из статьи (синтаксис, конструкции), но хотелось бы понять — специально для Вас я записал видеокурс Программированию на Python с Нуля до Гуру, который позволит Вам стать достаточно сильным Python-разработчиком.
-
- Михаил Русаков
Комментарии (0):
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.