Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Общие вопросы по программированию, компьютерный форум
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.08.2023, 00:34   #1
Татьяна2001
Новичок
Джуниор
 
Регистрация: 07.08.2023
Сообщений: 3
Подмигивание Давайте разработаем приложение

Давайте разработаем приложение, которое позволяет пользователю ввести две даты и список праздничных дней, а затем возвращает количество рабочих дней между этими датами, количество выходных и количество праздничных дней.
Татьяна2001 вне форума Ответить с цитированием
Старый 07.08.2023, 07:06   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Начинайте. Можно самым элементарным циклом.
p51x вне форума Ответить с цитированием
Старый 07.08.2023, 09:11   #3
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,309
По умолчанию

Могу немного помочь.
Цитата:
... которое позволяет пользователю ввести две даты и список праздничных дней ...
Пользователя напрягать не стоит. Файл с праздничными днями, в одном из форматов, можно получить, например тут: http://xmlcalendar.ru/
Тогда задача будет сведена к тому, что пользователь вводит только две даты и получает приз.

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

PS:
1. Да, учёт суббот и воскресений, а также рабочих суббот и местных праздников ...
Особо надо учитывать, если указы по местным праздникам формируются накануне.

2. Если погуглить, то, похоже, можно найти решения на Exell (там VBA).

А какой ЯВУ вы предлагаете для решения такой задачи?
Как-то так, ...
ViktorR на форуме Ответить с цитированием
Старый 07.08.2023, 09:27   #4
Татьяна2001
Новичок
Джуниор
 
Регистрация: 07.08.2023
Сообщений: 3
По умолчанию

Цитата:
Сообщение от ViktorR Посмотреть сообщение

А какой ЯВУ вы предлагаете для решения такой задачи?
А чем Python плох?
Татьяна2001 вне форума Ответить с цитированием
Старый 07.08.2023, 10:18   #5
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,309
По умолчанию

Виртуальная машина Python должна быть установлена.
Не на всех рабочих местах это возможно (ограничения может наложить служба безопасности).

Есть варианты - Exell (VBA) или VBScript:
- VBScript, как правило, сегодня стоит по умолчанию.
- VBA ставится с офисом, если установить соответствующую птичку при установке.

Установка исполняемых файлов (*.exe - это от C++, Delphi (Pascal)) так же может быть ограничена службой безопасности организации.

Эти версии рассмотрены под Windows.
Для той ОС, которая установлена на вашем рабочем месте, ограничения могут быть другого характера.
Как-то так, ...
ViktorR на форуме Ответить с цитированием
Старый 07.08.2023, 10:37   #6
Татьяна2001
Новичок
Джуниор
 
Регистрация: 07.08.2023
Сообщений: 3
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Начинайте. Можно самым элементарным циклом.
Код:
import datetime

def date_statistics(start_date, end_date, holidays):
    # Парсим входные даты
    start_date = datetime.datetime.strptime(start_date, '%Y-%m-%d')
    end_date = datetime.datetime.strptime(end_date, '%Y-%m-%d')
    
    # Парсим праздничные дни
    holidays = [datetime.datetime.strptime(day, '%Y-%m-%d') for day in holidays]
    
    total_days = (end_date - start_date).days
    working_days = 0
    weekend_days = 0
    holiday_days = 0
    
    for day in range(total_days):
        temp_day = start_date + datetime.timedelta(days=day)
        # Если день недели - суббота или воскресенье
        if temp_day.weekday() >= 5:
            weekend_days += 1
            # Если день является праздничным
            if temp_day in holidays:
                holiday_days += 1
        else:
            # Если день является праздничным
            if temp_day in holidays:
                holiday_days += 1
            else:
                working_days += 1
                
    return {"working_days": working_days, "weekend_days": weekend_days, "holiday_days": holiday_days}

# Пример использования функции
holidays = ['2023-08-08', '2023-08-09']
stats = date_statistics('2023-08-06', '2023-08-16', holidays)
print(f"Рабочих дней: {stats['working_days']}, выходных: {stats['weekend_days']}, праздничных: {stats['holiday_days']}")
Татьяна2001 вне форума Ответить с цитированием
Старый 14.08.2023, 10:04   #7
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,160
По умолчанию

разве это приложение нужно кому нибуть кроме вас? Вряд ли
ADSoft вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
нужен грамотный программист доделать приложение на iOS, и сделать аналогичное приложение для андройда. Приложение на тему фитнеса Василий свим Фриланс 0 01.12.2018 16:16
Давайте рисовать. Lektorfuja Свободное общение 14 23.12.2016 10:43
Давайте пофантазируем Smitt&Wesson Свободное общение 19 08.11.2015 11:49
А давайте соберемся и... Ru_DoLF Gamedev - cоздание игр: Unity, OpenGL, DirectX 18 27.12.2010 01:11
Разработаем модуль triangle Настенька..Блонди Помощь студентам 2 05.02.2009 22:26