#python #python_3x
Мы получаем строку из файла "input" Надо проверить на наличие недопустимых символов В качестве первого символа могут выступать только русские буквы (большие и маленькие) Последующие символы могут быть русскими буквами (маленькими), знаками препинания (список знаков: !?:;"'., ), пробелами или цифрами Придумал алгоритм (пока что только на словесном) Если первый символ не относится к русским буквам, то выводим "текст некорректен" Иначе если все символы начиная со второго относятся к знакам или буквам, то выводим "текст корректен" Иначе выводим "текст некорректен" Вопрос в том, как можно создать "множество" символов и "множество" знаков(препинания, чисел и пробелов)?
Ответы
Ответ 1
Приведу пример проверки через регулярные выражения: import re def is_ok(text): match = re.match("""^[а-яА-ЯёЁ][а-яё0-9 !?:;"'.,]+$""", text) return bool(match) if __name__ == '__main__': ok_texts = ['Привет;', 'привет;', 'привет, пока;', 'привет? пока;', 'привет 123;'] for text in ok_texts: print(is_ok(text), text) print() not_ok_texts = ['прИвет;', '1привет;', 'hello;', 'прИВет (пока);', 'Привет (пока);'] for text in not_ok_texts: print(is_ok(text), text) Консоль: True Привет; True привет; True привет, пока; True привет? пока; True привет 123; False прИвет; False 1привет; False hello; False прИВет (пока); False Привет (пока); Спасибо Игорь Игоряныч за примеры!Ответ 2
import string first_let, *others = input() rus_lower = set('аоуыэяеёюибвгдйжзклмнпрстфхцчшщ') rus_upper = set('АОУЫЭЯЕЁЮИБВГДЙЖЗКЛМНПРСТФХЦЧШЩ') # разрешенные символы symbols = set('!?:;"., ').union(string.digits) if first_let not in rus_lower.union(rus_upper): print('Первый символ введен не корректно') if set(others).difference(set.union(rus_lower, symbols)): print('Введен не корректный символ') Корректный ввод: Привет; привет; привет, пока; привет? пока; привет 123; Не корректный ввод: прИвет; 1привет; hello; прИВет (пока); Привет (пока);
Комментариев нет:
Отправить комментарий