Здравствуйте, недавно начал изучать python по крижке и наткнулся на задние. Нужно сдлать проверку слова на полиндром, но так, чтобы не учитывались регистр, знаки препинания и пробелы. Программа ниже не работает. Скажите пожалуйста как почему и помогите с решением. Заранее спасибо.
def correction(text): for item in text: if item == ‘ ‘: del item text = text.lower() def reverse(text): return text[::-1] def is_palindrome(text): correction(text) if text == reverse(text): print(«Слово является полиндромом») else: print(«Слово не полиндром») something = input(«Введите текст: «) is_palindrome(something)
- Вопрос задан более трёх лет назад
- 1106 просмотров
1 комментарий
Простой 1 комментарий
Источник: qna.habr.com
Основные способы определения палиндрома в строке на языке Python
Палиндром || Python задачи с технических собеседований (интервью)
Палиндром — это слово, число, фраза, другая последовательность символов или серия элементов, которая одинаково читается в обоих направлениях, игнорируя пробелы, знаки препинания и регистр символов.
В этой статье мы рассмотрим различные способы определения палиндромов в Python.
Простой метод с использованием индексации
Первый и самый простой способ проверить, является ли строка палиндромом, — использовать индексацию Python для получения «зеркальной» строки и сравнить ее с исходной.
s = «radar» if s == s[::-1]: print(«Это палиндром») else: print(«Это не палиндром»)
Проверка палиндрома с использованием цикла
Программа-палиндром с использованием функции в Python
В этом руководстве по Python мы поймем как написать программу Python, чтобы проверить, является ли это палиндромом или нет. Кроме того, мы поговорим о палиндромах и программе для поиска палиндромов от 1 до 100.
Что такое палиндром в Python
Палиндром — это слово, фраза, число или другая последовательность символов, которая читается так же, как в прямом, так и в обратном направлении, игнорируя пробелы, знаки препинания и заглавные буквы. Примеры палиндромов включают «мадам», «гоночная машина» и «уровень».
Функция палиндрома в Python
В Python мы можем написать функцию для проверки того, является ли данная строка палиндромом. Для этого мы сначала нормализуем строку, преобразовав ее в нижний регистр. Это связано с тем, что функция должна рассматривать «мадам» и «мадам» как идентичные.
Затем мы перевернем строку и сравним ее с исходной строкой. Если они совпадают, строка является палиндромом; в противном случае это не так. Давайте посмотрим, как это работает с реальным кодом Python:
Palindrome Program in Python
def is_palindrome(s): s = s.lower() # Convert to lower case reversed_s = s[::-1] # Reverse the string return s == reversed_s # Compare original and reversed strings print(is_palindrome(‘racecar’)) print(is_palindrome(‘Python’))
Код Python создает функцию is_palindrome(s) чтобы определить, является ли строка s то же самое вперед и назад, игнорируя регистр. Функция преобразует строку в нижний регистр, переворачивает ее и проверяет, равна ли перевернутая строка оригиналу. ‘racecar’ возвращает True (это палиндром), а ‘Python’ возвращает False (не палиндром).
Выход:
Функция палиндрома в Python для игнорирования пробелов и пунктуации
Однако приведенная выше функция работает только для палиндромов из одного слова без пробелов и знаков препинания. Если вам нужна функция для проверки того, является ли фраза палиндромом, игнорируя пробелы, знаки препинания и регистр, мы можем изменить функцию следующим образом:
import string def is_palindrome(s): # Remove punctuation and convert to lower case s=»».join(c for c in s.lower() if c not in string.punctuation) # Remove spaces s = s.replace(‘ ‘, ») # Reverse the string reversed_s = s[::-1] # Compare original and reversed strings return s == reversed_s print(is_palindrome(‘Able was I ere I saw Elba’)) print(is_palindrome(‘A man, a plan, a canal, Panama’))
Этот скрипт Python определяет функцию is_palindrome(s) который проверяет, является ли фраза s является палиндромом, игнорирующим регистр, пробелы и знаки препинания.
Функция преобразует фразу в нижний регистр, удаляет знаки препинания и пробелы, а затем проверяет, одинаково ли читается полученная строка вперед и назад. Если да, то фраза является палиндромом.
Затем с помощью этой функции проверяются две фразы: «Я был способен, прежде чем увидел Эльбу» и «Человек, план, канал, Панама». Оба должны возвращать True, поскольку они являются палиндромами, если не учитывать регистр, пробелы и знаки препинания.
Выход:
Число палиндрома от 1 до 100 в Python
Чтобы найти все числа палиндрома от 1 до 100 в Python, мы можем написать цикл, который перебирает эти числа, а затем использовать функцию для проверки, является ли каждое число палиндромом. Вот простой скрипт, который делает это:
def is_palindrome(n): # Convert the number to a string str_n = str(n) # Reverse the string reversed_str_n = str_n[::-1] # Compare the original and reversed strings return str_n == reversed_str_n # Iterate over numbers from 1 to 100 for i in range(1, 101): if is_palindrome(i): print(i)
Сценарий Python определяет функцию с именем is_palindrome который проверяет, является ли данное число палиндромом. Число считается палиндромом, если оно читается так же, как в прямом, так и в обратном направлении. Эта функция преобразует число в строку, переворачивает эту строку, а затем проверяет, равна ли перевернутая строка исходной строке.
Затем сценарий выполняет цикл по числам от 1 до 100. Для каждого числа он проверяет, является ли число палиндромом, используя is_palindrome функция. Если число является палиндромом, оно распечатывается.
Выход:
Заключение
Как мы видим, мощные возможности Python для обработки строк позволяют нам легко написать функцию для проверки того, является ли строка палиндромом. Гибкость языка позволяет нам настроить эту функцию для учета регистра, пробелов и пунктуации. Даже это также работает для чисел.
Вы также можете прочитать:
Я Биджай Кумар, Microsoft MVP в SharePoint. Помимо SharePoint, последние 5 лет я начал работать над Python, машинным обучением и искусственным интеллектом. За это время я приобрел опыт работы с различными библиотеками Python, такими как Tkinter, Pandas, NumPy, Turtle, Django, Matplotlib, Tensorflow, Scipy, Scikit-Learn и т. д. для различных клиентов в США, Канаде, Великобритании, Австралии, Новая Зеландия и т. д. Проверьте мой профиль.
Источник: pythonbook.site