/
school120
/
if-else
Обзор
Документация
Войти
/
school120
/
if-else
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
master
task3.py
98 строк
9 KB
Gorbach
initial commit
22 сен 2025, 11:38
22 сен 2025, 11:38
4ea6b66
Код
Авторство
О чём код?
# Эта программа решает задачу «Квартал и корректность даты». На вход она получает три числа: день, месяц и год. # Сначала мы проверяем, существует ли такая дата в реальном календаре с учётом количества дней в месяцах и високосных лет. # Если дата неверная, выводим поясняющее сообщение. Если дата корректна, определяем, в какой квартал года попадает месяц, # и выводим номер квартала (1, 2, 3 или 4). Комментарии расписаны очень подробно, чтобы разобраться можно было без опыта в Python. # --------------------------------------------------------------- # БЛОК №1. СЧИТЫВАНИЕ ТРЁХ ЧИСЕЛ # --------------------------------------------------------------- # Функция input() останавливает программу и ждёт, пока пользователь напечатает данные и нажмёт Enter. # В условии говорится, что через пробел вводятся три числа: день, месяц, год. # Метод .split() разрезает строку по пробелам, поэтому, если введено «15 9 2023», мы получим список из строк ['15', '9', '2023']. # Функция map() применяет преобразование int() к каждой строке, превращая каждую из них в целое число. # После этого три числа раскладываются в три переменные: day (день), month (месяц), year (год). # Каждая переменная — это подписанная коробка, где хранится соответствующее число. day, month, year = map(int, input().split()) # --------------------------------------------------------------- # БЛОК №2. ПОДГОТОВКА ПЕРЕМЕННОЙ ДЛЯ ХРАНЕНИЯ РЕЗУЛЬТАТА ПРОВЕРКИ # --------------------------------------------------------------- # Переменная is_correct будет отвечать на вопрос: «Дата корректна?». # По умолчанию считаем, что нет (False). Позже, если все проверки пройдут, переключим её на True. is_correct = False # --------------------------------------------------------------- # БЛОК №3. БЫСТРЫЙ ОТСЕВ НЕКОРРЕКТНЫХ ДАННЫХ # --------------------------------------------------------------- # Сразу проверяем очевидные ошибки. Если день больше 31 — это точно неверно, т.к. ни один месяц не длиннее 31 дня. # Если месяц меньше 1 или больше 12 — тоже ошибка, ведь месяцы нумеруются от 1 до 12. # В таких ситуациях можно сразу завершить работу и сообщить пользователю, что дата неправильная. if day > 31 or month < 1 or month > 12: # Функция print() выводит текст на экран. Здесь печатаем сообщение о некорректной дате. print("Дата некорректна") else: # Если мы оказались здесь, значит быстрые проверки пройдены. Нужно уточнить количество допустимых дней в конкретном месяце. # Ниже мы перебираем случаи для месяцев с 31, 30 и 28/29 днями. В комментариях указаны стандартные наборы # (1 — январь, 2 — февраль, 3 — март, ... , 12 — декабрь). # --------------------------------------------------------------- # БЛОК №4. МЕСЯЦЫ С 31 ДНЁМ # --------------------------------------------------------------- # Месяцы, в которых обычно 31 день: январь, март, май, июль, август, октябрь, декабрь. # В исходном коде перечислены конкретные номера месяцев через многострочное условие. if (month == 1 or month == 3 or month == 5 or month == 7 or month == 9 or month == 12) and day < 32: # Если номер месяца попал в список выше и номер дня меньше 32 (то есть не превышает 31), дата считается корректной. is_correct = True # --------------------------------------------------------------- # БЛОК №5. МЕСЯЦЫ С 30 ДНЯМИ # --------------------------------------------------------------- # Для месяцев, где максимум 30 дней, требуется отдельная проверка: апрель, июнь, сентябрь, ноябрь. # Логика та же: сравниваем номер месяца с перечислением и убеждаемся, что день не превышает 30. elif (month == 4 or month == 6 or month == 8 or month == 10) and day < 31: is_correct = True # --------------------------------------------------------------- # БЛОК №6. ФЕВРАЛЬ (ВТОРОЙ МЕСЯЦ) — НУЖНО УЧИТЫВАТЬ ВИСОКОСНЫЕ ГОДЫ # --------------------------------------------------------------- elif month == 2: # Високосный год — это год, в котором февраль длится 29 дней. Во всех остальных случаях февраль имеет 28 дней. # Правило високосности из условия: год високосный, если делится на 400 без остатка, либо делится на 4 и при этом # не делится на 100. Оператор % вычисляет остаток от деления: year % 400 == 0 означает «остаток равен нулю». if year % 400 == 0 or (year % 4 == 0 and year % 100 != 0): is_vs = True # Значение True означает «год високосный». else: is_vs = False # Значение False — «год не високосный». # Теперь проверяем конкретный день. Если год високосный, допустимы дни 1..29. Условие day < 30 проверяет именно это. # Если год не високосный, верхняя граница — 28 (условие day < 29). if (is_vs and day < 30) or (not is_vs and day < 29): is_correct = True # Если ни одно из условий не сработало, переменная is_correct так и останется False, что значит «дата неправильная». # --------------------------------------------------------------- # БЛОК №7. ОПРЕДЕЛЕНИЕ КВАРТАЛА, ЕСЛИ ДАТА КОРРЕКТНА # --------------------------------------------------------------- if is_correct: # Раз is_correct == True, значит дата прошла все проверки. # Теперь нужно вывести номер квартала. Квартал — это группа из трёх месяцев: # 1 квартал: январь (1), февраль (2), март (3) # 2 квартал: апрель (4), май (5), июнь (6) # 3 квартал: июль (7), август (8), сентябрь (9) # 4 квартал: октябрь (10), ноябрь (11), декабрь (12) if month == 1 or month == 2 or month == 3: print(1) elif month == 4 or month == 5 or month == 6: print(2) elif month == 7 or month == 8 or month == 9: print(3) else: # Если не подходят предыдущие проверки, остаются месяцы 10, 11 и 12 — это четвёртый квартал. print(4) # После вывода программа доходит до конца файла и завершается автоматически.