Ошибка в программе при проверке текста на наличие букв

изучаю 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 шт):

Автор решения: pasporty

Нужно заменить оператор 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("Поиск завершен")
→ Ссылка
Автор решения: Andy Pavlov

Вы используете 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("Поиск завершен")
→ Ссылка