Как проверить, содержит ли строка слово из списка
Я хочу, чтобы пользователь ввел в программу тексты песен (позже это будет распространено на поиск по сайту, но в данный момент мне не нужна помощь с этим), и программа сообщит мне, содержит ли введенная информация слово из списка.
banned_words = ["a","e","i","o","u"] #This will be filled with swear words
profanity = False
lyrics = input ("Paste in the lyrics: ")
for word in lyrics:
if word in banned_words:
print("This song says the word "+word)
profanity = True
if profanity == False:
print("This song is profanity free")
Этот код просто выводит "Эта песня не содержит ненормативную лексику".
1 ответ
Есть несколько идей, которые я бы порекомендовал:
- Разбить по пробелам, используя
str.split
, - использование
set
для поиска O(1). Это обозначается{}
вместо[]
используется для списков. - Оберните свою логику в функцию. Таким образом, вы можете просто
return
как только ругательство будет достигнуто. Тебе тогда больше не нужноelse
заявления. - Использование функции означает, что вам не нужно устанавливать переменную по умолчанию, а затем переназначать ее, если применимо.
- Поймать прописные и строчные слова, используя
str.casefold
,
Вот пример:
banned_words = {"a","e","i","o","u"}
lyrics = input("Paste in the lyrics: ")
def checker(lyrics):
for word in lyrics.casefold().split():
if word in banned_words:
print("This song says the word "+word)
return True
print("This song is profanity free")
return False
res = checker(lyrics)