Как проверить, содержит ли строка слово из списка

Я хочу, чтобы пользователь ввел в программу тексты песен (позже это будет распространено на поиск по сайту, но в данный момент мне не нужна помощь с этим), и программа сообщит мне, содержит ли введенная информация слово из списка.

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)
Другие вопросы по тегам