проверка строки на палиндром (слово проверяется, текст нет)
Проверка слова палиндрома проходит, а строки ну никак, выдает False пример палиндрома: А буду я у дуба
def palyndrom ():
usr_string = input("enter string")
urs_string = usr_string.replace(' ', '').replace(',', '').lower()
reverce_str = usr_string[:: -1]
if usr_string == reverce_str:
print ("True")
else :
print("False")
palyndrom()
Ответы (2 шт):
Автор решения: gil9red
→ Ссылка
Попробуйте:
def is_palyndrom(text: str) -> bool:
text = text.lower().strip().replace(' ', '')
return text == text[::-1]
text = 'А буду я у дуба'
print(is_palyndrom(text))
# True
usr_string = input("enter string")
print(is_palyndrom(usr_string))
Вместо удаления символов можно заново составить текст, оставив только те, что разрешены (из русского алфавита):
def is_palyndrom(text: str) -> bool:
ru_lowercase = 'абвгдеёжзийклмнопрстуфхцчшщъыьэюя'
text = ''.join(c for c in text.lower() if c in ru_lowercase)
return text == text[::-1]
Или вариант через регулярки (тут все символы, что не входят в кириллицу, будут удалены):
import re
def is_palyndrom(text: str) -> bool:
text = re.sub('[^а-яё]', '', text.lower())
return text == text[::-1]
Автор решения: Julia
→ Ссылка
import re
def palyndrom (usr_string):
usr_string = re.sub(r'[\W ]','',usr_string).lower()
if usr_string == usr_string[:: -1] :
return "Палиндром"
return "Не палиндром"
print(palyndrom(input("Введите текст для проверки: ")))