DamiRocK

Python: отрицание not и пара предикатов палиндрома

Создаём is_palindrome() и is_not_palindrome(), используя lower(), обратный срез и отрицание. Не добавляем незаявленное удаление пробелов и пунктуации.

Противоположный ответ

Оператор not превращает истинное значение в False, ложное — в True. Если уже есть функция, проверяющая условие, противоположную проверку удобно определить через её результат, а не копировать всю логику.

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

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

def is_palindrome(text: str) -> bool:
    normalized = text.lower()
    return normalized == normalized[::-1]


def is_not_palindrome(text: str) -> bool:
    return not is_palindrome(text)

Примеры

is_palindrome("шалаш") и is_palindrome("ШаЛаШ") дают True. Для "python" результат False, а is_not_palindrome возвращает противоположное значение.

Срез [::-1] создаёт обратную последовательность кодовых точек строки. lower создаёт вариант в нижнем регистре, не меняя исходный аргумент.

Точное правило нормализации

Условие требует игнорировать регистр, но не пробелы и знаки препинания. Поэтому фраза с расставленными пробелами может не пройти проверку, даже если после их удаления стала бы палиндромом. Добавить такое удаление можно лишь как отдельное расширение.

Для сложных Unicode-текстов правила визуального сравнения, нормализации и регистронезависимости могут потребовать более точной постановки. Здесь сохранён начальный алгоритм источника, рассчитанный на обычные учебные строки.

Пустая строка

Пустая строка равна своему обратному срезу, поэтому в данной реализации она считается палиндромом. Отрицательный предикат возвращает для неё False. Это следует из кода; дополнительное требование непустого слова в исходном задании не сформулировано.

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.