DamiRocK

Python: and, or и учебное правило для високосного года

Объединяем делимость на 4, исключение для 100 и возврат для 400. Проверяем 1900, 2000, 2024 и 2025 и делаем порядок условий явным.

Составное условие

Для логических значений and требует истинности обеих частей, or — хотя бы одной. Проверки можно объединять в выражение и возвращать его результат напрямую. Скобки помогают показать группировку и не полагаться на память о приоритетах.

Задание источника

Реализуйте проверку високосного года по правилу упражнения: год делится на 4, кроме делящихся на 100; делящиеся на 400 всё же считаются високосными.

def is_leap_year(year: int) -> bool:
    return (year % 4 == 0 and year % 100 != 0) or year % 400 == 0

Четыре контрольных значения

Год Причина Результат
1900 Делится на 100, но не на 400 False
2000 Делится на 400 True
2024 Делится на 4, не на 100 True
2025 Не делится на 4 False

Эти примеры проверяют каждую смысловую ветвь, а не только обычный год, кратный четырём.

Почему одного остатка недостаточно

Проверка year % 4 == 0 не учитывает исключение столетий и ошибается на 1900. Проверка только делимости на 400 слишком строгая и исключает 2024. Нужна именно комбинация двух условий.

Что возвращают части

Каждое сравнение остатков даёт bool, поэтому итоговое выражение в этом решении тоже логическое. В более общем случае and и or могут возвращать сами операнды, а не обязательно bool; это рассматривается отдельно.

Задание реализует заданное арифметическое календарное правило. Оно не определяет, какая система летоисчисления исторически использовалась в конкретной стране и дате, и не проверяет допустимость отрицательных значений года.

Hexlet / Code Basics и участники · Исходный урок и решение · GNU AGPL v3. Правило упражнения сохранено; ветви проверены.

Reading preferences

Appearance
Contrast
More options

Saved only in this browser. Your device’s reduced-motion setting is always respected. Browser zoom works throughout the site.