Pull to refresh

Comments 3

Краткость — сестра программиста

Нет, нет, нет, сёстры программиста --- читабельность и понятность _для человека_.

А то будет не код, а шлакоблокунь.

Да, код в первую очередь должен быть читаемым. А краткость, ну такое.... можно и в list comprehension такое завернуть... вроде и кратко но фиг прочитаешь потом.

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

Код

Наш код должен определять, совпадают ли символы заданной строки символов в обратном порядке с исходной строкой, то есть определять, является ли эта строка палиндромом.

Общее описание

Для начала: что такое палиндром? Палиндром — это последовательность элементов (например, строка или список), которая читается одинаково от начала к концу и наоборот. Рассмотрим несколько забавных примеров палиндромов (без учета пробелов).

  • 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

Этот код, конечно, чуть сложнее понять новичку, но зато более полно учитывает понятие "палиндром"

Sign up to leave a comment.