Как проверить, содержит ли строка слово из списка - PullRequest
0 голосов
/ 05 июня 2018

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

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 Ответ

0 голосов
/ 05 июня 2018

Я бы порекомендовал несколько идей:

  • Разбить по пробелам, используя 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)
...