М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
Rororor11111
Rororor11111
11.10.2022 18:22 •  Информатика

Напишите программу "калькулятор дат",которая выводит календарь на любой год, подсчитывает количества дней, недель, месяцев и лет между двумя любыми датами

👇
Ответ:
aaa1616
aaa1616
11.10.2022

Калькулятор дней между двумя датами может использоваться в самых различных ситуациях. К примеру, хотите узнать, сколько дней вы прожили? Введите дату своего рождения и сегодняшнюю дату в калькулятор и вы узнаете результат. Предположим, что вы родились 2 декабря 1984 года, а сегодня 17 ноября 2015. Если ввести эти даты в калькулятор дней, то он выдаст ответ — вы прожили 11 307 дней. Кстати, узнать в какой день недели вы родились можно здесь.

Иногда интересно узнать сколько дней с памятного события. Все мы знаем, что Великая Отечественная война завершилась 9 мая 1945 года. С калькулятора легко определить, что с момента окончания ВОВ дней (учитывая, что сегодня 17 ноября 2015 года). Если же преобразовать эту цифру в годы и месяцы, то — 70 лет 6 месяцев и 8 дней.Можно также определить сколько длилась ВОВ. Если мы введем дату начала войны 22 июня 1941 года и дату ее окончания 9 мая 1945 года, то узнаем, что Отечественная война длилась 1417 дней. При этом началась она в воскресенье, а закончилась в среду.




Напишите программу калькулятор дат,которая выводит календарь на любой год, подсчитывает количества
4,6(49 оценок)
Ответ:
Bbbbkoo
Bbbbkoo
11.10.2022
Хорошо, давайте решим эту задачу пошагово:

Шаг 1: Получение дней в месяце
Для начала нам понадобится функция, которая будет возвращать количество дней в заданном месяце в заданном году. Это можно сделать с помощью следующего кода:

```python
def days_in_month(month, year):
if month == 2:
if year % 4 == 0 and (year % 100 != 0 or year % 400 == 0):
return 29
else:
return 28
elif month in [4, 6, 9, 11]:
return 30
else:
return 31
```

Шаг 2: Ввод и проверка дат
Теперь нужно написать функцию, которая будет запрашивать у пользователя даты и проверять их корректность. Для этого можно использовать следующий код:

```python
def input_date():
while True:
try:
date_str = input("Введите дату в формате ДД.ММ.ГГГГ: ")
day, month, year = [int(x) for x in date_str.split('.')]
if day < 1 or day > 31 or month < 1 or month > 12:
raise ValueError
else:
return day, month, year
except ValueError:
print("Неправильный формат даты. Попробуйте снова.")
```

Шаг 3: Расчет количества дней между двумя датами
Теперь нам нужно написать функцию, которая будет принимать на вход две даты и вычислять количество дней между ними. Мы будем использовать класс `date` из модуля `datetime` для обработки дат. Вот код для этой функции:

```python
from datetime import date

def calculate_days(date1, date2):
d1 = date(date1[2], date1[1], date1[0])
d2 = date(date2[2], date2[1], date2[0])
delta = d2 - d1
return delta.days
```

Шаг 4: Расчет количества недель, месяцев и лет
Наконец, нам нужно посчитать количество недель, месяцев и лет на основе полученного ранее количества дней. Вот код для этой функции:

```python
def calculate_time_period(days):
years = days // 365
months = (days % 365) // 30
weeks = ((days % 365) % 30) // 7
return years, months, weeks
```

Шаг 5: Вывод результатов
Теперь все, что нам нужно сделать, это вызвать наши функции в правильном порядке и вывести результаты на экран. Вот полный код программы:

```python
def days_in_month(month, year):
if month == 2:
if year % 4 == 0 and (year % 100 != 0 or year % 400 == 0):
return 29
else:
return 28
elif month in [4, 6, 9, 11]:
return 30
else:
return 31

def input_date():
while True:
try:
date_str = input("Введите дату в формате ДД.ММ.ГГГГ: ")
day, month, year = [int(x) for x in date_str.split('.')]
if day < 1 or day > 31 or month < 1 or month > 12:
raise ValueError
else:
return day, month, year
except ValueError:
print("Неправильный формат даты. Попробуйте снова.")

from datetime import date

def calculate_days(date1, date2):
d1 = date(date1[2], date1[1], date1[0])
d2 = date(date2[2], date2[1], date2[0])
delta = d2 - d1
return delta.days

def calculate_time_period(days):
years = days // 365
months = (days % 365) // 30
weeks = ((days % 365) % 30) // 7
return years, months, weeks

# Главная часть программы
print("Добро пожаловать в калькулятор дат!")
print("Введите первую дату:")
date1 = input_date()
print("Введите вторую дату:")
date2 = input_date()

days = calculate_days(date1, date2)
years, months, weeks = calculate_time_period(days)

print(f"Между этими двумя датами прошло {days} дней.")
print(f"Это составляет примерно {years} лет, {months} месяцев и {weeks} недель.")
```

Эта программа запрашивает у пользователя две даты в формате ДД.ММ.ГГГГ, вычисляет количество дней между ними и выводит также количество лет, месяцев и недель, прошедших между этими датами. Количество дней в месяце рассчитывается отдельной функцией, а количество дней между датами рассчитывается с использованием класса `date` модуля `datetime`.
4,8(30 оценок)
Проверить ответ в нейросети
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ