#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')
Комментариев нет:
Отправить комментарий