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

ксения1361 ксения1361    2   12.08.2019 10:10    23

Ответы
Andrey785 Andrey785  04.10.2020 13:11

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

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




Напишите программу калькулятор дат,которая выводит календарь на любой год, подсчитывает количества
ПОКАЗАТЬ ОТВЕТЫ
мопс22 мопс22  19.01.2024 17:32
Хорошо, давайте решим эту задачу пошагово:

Шаг 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`.
ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика