#python #python_3x
Делаю скрипт "Проверка на палиндром".Нужно чтоб скрипт проверял текст на наличие
спец.символов, а за тем убирал их если они были найдены.Вот собственно код:
text = input(" --> ")
array = ('.',',',' ','!')
for i in array:
if text.find(i):
text.replace(i,'')
if text.lower() == text[::-1].lower():
print('yes')
else:
print('no')
Программа работает,но скрипт не убирает спец.символы из текста,есть подозрения на
2 или 6 строки.Хелп ми!
Ответы
Ответ 1
text.replace(i,'') возвращает измененную строку, но сама переменная text остается неизменной но я бы делал это с использованием регулярных выражений: import re import string def is_palindrome(s): pat = f"[\s{re.escape(string.punctuation)}]" s = re.sub(pat, "", s).lower() return s == s[::-1] тесты: In [8]: is_palindrome("Assa") Out[8]: True In [9]: is_palindrome(".A-s,sa!") Out[9]: True In [10]: is_palindrome("Massa") Out[10]: FalseОтвет 2
Незнание синтаксиса губит,не обязательно проверять наличие запрещенных символов в строке,можно сразу же их перебирать в цикле for и замещать методом text.replace().Если символа в строке не окажется,ошибки не будет!Вот,собственно,код: text = input(' --> ') array = (',','.','!',' ') for i in array: text = text.replace(i,'') if text.lower() == text[::-1].lower(): print('isPalindrom') else: print('isNotPalindrom')
Комментариев нет:
Отправить комментарий