Страницы

Поиск по вопросам

четверг, 13 февраля 2020 г.

Палиндром и метод replace

#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')

Комментариев нет:

Отправить комментарий