написать программу на Python!
Историки проанализировали множество древних текстов и выписали из них предполагаемые даты конца света, однако при переписывании ошиблись в некоторых из них. Напишите программу, которая принимает строки с датами до символа точки и для каждой из дат печатает "Корректная" или "Некорректная", а затем выводит число – количество корректных дат. Для анализа даты напишите функцию check_date(). Даты вводятся в формате DD.MM..
Входные данные :
19.05.2016
05.13.2010
21.12.2012
01.01.1000
32.04.2003
.
Выходные :
Корректная
Некорректная
Корректная
Корректная
Некорректная
3
Необходимо также не забыть про проверку високосности года .

desna80 desna80    1   27.02.2020 21:57    100

Ответы
vika2075 vika2075  21.01.2024 16:22
Хорошо, давайте решим задачу поэтапно.

Шаг 1: Создание функции проверки даты

Начнем с написания функции check_date(), которая будет принимать дату в виде строки и возвращать True, если дата корректна, или False, если дата некорректна. Функция будет основываться на следующих правилах проверки:

1) День (DD) должен быть числом от 1 до 31.
2) Месяц (MM) должен быть числом от 1 до 12.
3) Год (YYYY) должен быть числом от 1000 до 9999.
4) Если год делится на 4 без остатка, то это високосный год, и в феврале может быть от 1 до 29 дней. В противном случае февраль может иметь только от 1 до 28 дней.

Ниже приведен код функции check_date():

```python
def check_date(date):
day, month, year = date.split('.') # Разделяем дату на составляющие
day = int(day)
month = int(month)
year = int(year)

if year < 1000 or year > 9999:
return False

if month < 1 or month > 12:
return False

if month == 2:
if (year % 4 == 0 and year % 100 != 0) or year % 400 == 0:
if day < 1 or day > 29:
return False
else:
if day < 1 or day > 28:
return False
elif month in [4, 6, 9, 11]:
if day < 1 or day > 30:
return False
else:
if day < 1 or day > 31:
return False

return True
```

Шаг 2: Создание основной программы

Теперь создадим основную программу, которая будет принимать строки с датами, вызывать функцию check_date() для каждой даты и печатать результаты проверки, а затем выводить количество корректных дат.

```python
correct_count = 0 # Счетчик корректных дат

while True:
date = input() # Ввод даты

if date == '.': # Если встретился символ точки, прекращаем ввод
break

if check_date(date):
print("Корректная")
correct_count += 1
else:
print("Некорректная")

print(correct_count) # Вывод количества корректных дат
```

Шаг 3: Запуск программы и тестирование

Теперь запустите программу и введите даты, по одной на строке, в соответствии с входными данными, пока не встретится символ точки. После этого программа должна вывести результаты проверки и количество корректных дат.

Пример входных данных:
```
19.05.2016
05.13.2010
21.12.2012
01.01.1000
32.04.2003
.
```

Пример выходных данных:
```
Корректная
Некорректная
Корректная
Корректная
Некорректная
3
```

Надеюсь, данное решение полностью отражает задачу и поможет школьнику понять, как решить ее на Python.
ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика