В этом уроке Python мы поймем, как написать программу Python, чтобы проверить, является ли она палиндромом или нет. Кроме того, мы поговорим о палиндромах и программе для поиска палиндромов от 1 до 100.
- Что такое палиндром
- Как написать функцию
- Функция для игнорирования пробелов и знаков препинания
- Число-палиндром от 1 до 100
- Используя цикл for
- Используя цикл while
- Используя функцию verse()
- С помощью разрезания строк
- С использованием рекурсии
- Заключение
Что такое палиндром
Палиндром — это слово, фраза, число или другая последовательность символов, которая читается как в обратном, так и в прямом направлении, игнорируя пробелы, знаки препинания и заглавные буквы.
Примеры палиндромов включают «madam» и «level».
Как написать функцию
В Python мы можем написать функцию, проверяющую, является ли данная строка палиндромом. Для этого мы сначала нормализуем строку, преобразуя ее в нижний регистр. Это связано с тем, что функция должна считать слова «мадам» и «госпожа» идентичными.
Далее мы перевернем строку и сравним ее с исходной строкой. Если они совпадают, строка является палиндромом, в противном случае это не так. Давайте посмотрим, как это работает с реальным кодом 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 одинаковой в прямом и обратном направлении, игнорируя регистр. Функция преобразует строку в нижний регистр, переворачивает ее и проверяет, равна ли перевернутая строка оригиналу. «гоночная машина» возвращает True(это палиндром), а «Python» возвращает False(не палиндром).
Выход:
Функция для игнорирования пробелов и знаков препинания
Однако приведенная выше функция работает только для палиндромов из одного слова без пробелов и знаков препинания.
Если вам нужна функция, проверяющая, является ли фраза палиндромом, игнорируя пробелы, знаки препинания и регистр, мы можем изменить функцию следующим образом:
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
Чтобы найти все числа палиндромов от 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. Если число является палиндромом, оно распечатывается.
Выход:
Используя цикл for
Цикл for используется для перебора строк. С помощью оператора if-else я проверю, является ли строка палиндромом или нет в Python.
Вот полная программа для проверки того, является ли строка палиндромом или не используется цикл for в Python.
def isPalindrome(str): for i in range(0, int(len(str) / 2)): if str[i] != str[len(str) - i - 1]: return False return True word = "refer" result = isPalindrome(word) if(result): print("Yes") else: print("No")
Здесь он проверит только половину строки, чтобы определить, является ли строка палиндромом в Python.
for i in range(0, int(len(str) / 2)): if str[i] != str[len(str) - i - 1]:
Вы можете обратиться к снимку экрана ниже после выполнения кода Python, он дает результат:
и
Используя цикл while
Цикл while — это еще один способ перебора строк в Python. Здесь я буду использовать оператор равенства ‘==’, чтобы проверить, равен ли первый символ строки последнему символу строки и так далее.
Вот полный код Python для проверки, является ли данная строка палиндромом, с помощью цикла while.
def check_palindrome(string): string = string.lower() forward_increment = 0 backward_decrement = len(string) - 1 while forward_increment < backward_decrement: if string[forward_increment] == string[backward_decrement]: return True forward_increment += 1 backward_backword -= 1 return True input_string = input("Enter a string: ") if check_palindrome(input_string): print("The string is a palindrome.") else: print("The string is not a palindrome.")
Вывод: относится к изображению, представленному ниже, чтобы увидеть вывод после выполнения программы Python.
Используя функцию verse()
В этом случае в Python я буду использовать встроенный метод verse() для перебора символов строк в обратном порядке. Кроме того, я буду использовать метод join для соединения перевернутых символов.
Это полный код:
def is_Palindrome(string): reversed_string =''.join(reversed(string)) if string==reversed_string: return "The string is a palindrome." return "The string is not a palindrome." string = input("Enter string: ") print(is_Palindrome(string))
Вывод: на снимке экрана ниже показан вывод после выполнения кода на Python.
С помощью разрезания строк
Если вы не хотите использовать обратный метод и метод соединения, вы можете использовать метод разрезания строк, чтобы проверить, является ли строка палиндромом в Python.
Операция нарезки в Python используется для создания обратной копии строки. Это обозначение [: : -1], которое я буду использовать для эффективного переворачивания строк.
Код:
string = input("Enter string: ") if(string == string[::-1]) : print("The string is a palindrome.") else: print("The string is not a palindrome.")
Вывод: ниже вы можете увидеть вывод после выполнения кода Python, чтобы проверить, является ли строка палиндромом или нет.
С использованием рекурсии
В Python метод рекурсии — это процесс, внутри которого вызывается функция Python.
Вот полная программа:
def check_for_Palindrome(string): if len(string) < 1: return True else: if string[0] == string[-1]: return check_for_Palindrome(string[1:-1]) else: return False input_word = input("Enter string : ") if(check_for_Palindrome(input_word)==True): print("The string is a palindrome.") else: print("The string is not a palindrome.")
Здесь я использовал различные условные операторы для сравнения первого и последнего символов строки в Python.
if string[0] == string[-1]: return check_for_Palindrome(string[1:-1])
Теперь, если первый и последний символы строки совпадают, функция вызывает себя рекурсивно.
Вывод: обращается к изображению ниже, чтобы увидеть вывод после выполнения программы Python, чтобы проверить, является ли строка палиндромом или нет.
Заключение
Как мы видим, мощные возможности Python по обработке строк позволяют нам легко написать функцию, проверяющую, является ли строка палиндромом. Это позволяет нам настроить эту функцию для учета регистра, пробелов и знаков препинания.