Comments 3
Краткость — сестра программиста
Нет, нет, нет, сёстры программиста --- читабельность и понятность _для человека_.
А то будет не код, а шлакоблокунь.
Статья забавная, но мне показалось странным, что постановка задачи на нахождение палиндрома противоречит тому, что было рассказано про палиндромы до этого
Код
Наш код должен определять, совпадают ли символы заданной строки символов в обратном порядке с исходной строкой, то есть определять, является ли эта строка палиндромом.
Общее описание
Для начала: что такое палиндром? Палиндром — это последовательность элементов (например, строка или список), которая читается одинаково от начала к концу и наоборот. Рассмотрим несколько забавных примеров палиндромов (без учета пробелов).
Mr Owl ate my metal worm.
В итоге появляется забавная ситуация - пример решения задачи не воспримет как палиндром то, что в статье является примером палиндрома
phrase = "Mr Owl ate my metal worm"
is_palindrome = lambda phrase: phrase == phrase[::-1]
is_palindrome(phrase) # False
Потому что при сравнении учитываются пробелы как символы, а заглавные и строчные буквы учитываются как разные символы. Можно несколько доработать текущий код, чтобы не учитывались пробелы и регистр букв, следующим образом:
phrase = "Mr Owl ate my metal worm"
is_palindrome_v2 = lambda phrase: phrase.lower().replace(' ', '') == phrase.lower().replace(' ', '')[::-1]-1]
is_palindrome_v2(phrase) # True
Этот код, конечно, чуть сложнее понять новичку, но зато более полно учитывает понятие "палиндром"
Книга «Однострочники Python: лаконичный и содержательный код»