Ошибка в программе при проверке текста на наличие букв
изучаю Python и пишу программу на проверку содержания букв в тексте. Имеется вот такой вот код:
import string
mytext = input("Введите текст для проверки: ")
n = input("Введите буквы для поиска: ")
n = n.replace(" ", "")
symbs = list(n)
print("Ищем такие буквы: ", symbs)
for s in symbs:
if s in mytext:
print("В тексте есть буква '"+s+"'")
break
else:
print("В тексте нет буквы '"+s+"'")
else:
print("Таких букв в тексте нет")
print("Поиск завершен")
Например: "Привет меня зовут Олег" является текстом для проверки, а буквы "П,р,и,в,е,т" являются искомыми. В этом случае результат программы будет таков:
Введите текст для проверки: Привет меня зовут Олег
Введите буквы для поиска: Привет
Ищем такие буквы: ['П', 'р', 'и', 'в', 'е', 'т']
В тексте есть буква 'П'
Поиск завершен
Как сделать так чтобы отображались все найденные буквы
Ответы (3 шт):
Нужно заменить оператор break оператором continue.
mytext = input("Введите текст для проверки: ")
n = input("Введите буквы для поиска: ")
n = n.replace(" ", "")
symbs = list(n)
print("Ищем такие буквы: ", symbs)
for s in symbs:
if s in mytext:
print("В тексте есть буква '"+s+"'")
# поменяли break на continue
continue
print("В тексте нет буквы '"+s+"'")
print("Поиск завершен")
Вы используете break на первой попавшейся букве при поиске, останавливая выполнение цикла. Он там не нужен. else после цикла также не нужен. В данном случае он всегда будет выводить "Таких букв в тексте нет" и путать.
Могу предложить такой вариант. Вводы поменял на строки. Добавил фильтрацию символов через регулярные выражения и их уникализацию.
import re
mytext = 'Привет меня зовут Олег'
n = 'П ри вет 1212. _'
n = re.sub('\W|_', '', n) # оставляем только буквы и цифры
symbs = list(dict.fromkeys(n)) # нужно для получения упорядоченного списка уникальных букв вместо использования set()
print("Ищем такие буквы: ", symbs)
for s in symbs:
if s in mytext:
print("В тексте есть буква '"+s+"'")
else:
print("В тексте нет буквы '"+s+"'")
print("Поиск завершен")
Вывод:
Ищем такие буквы: ['П', 'р', 'и', 'в', 'е', 'т', '1', '2']
В тексте есть буква 'П'
В тексте есть буква 'р'
В тексте есть буква 'и'
В тексте есть буква 'в'
В тексте есть буква 'е'
В тексте есть буква 'т'
В тексте нет буквы '1'
В тексте нет буквы '2'
Поиск завершен
В итоге работающим оказался вот такой вот код:
mytext = input("Введите текст для проверки: ")
n = input("Введите буквы для поиска: ")
n = n.replace(" ", "")
symbs = list(n)
print("Ищем такие буквы: ", symbs)
for s in symbs:
if s in mytext:
print("В тексте есть буква '"+s+"'")
else:
print("Таких букв в тексте нет")
print("Поиск завершен")