Как быстро проверить соответствие строки списку?

Сам себе придумал задачу, и не могу решить. В общем идея в том, что дан список рок групп в списке, и если пользователь ввёл хотя бы одну из них, то выдаётся надпись 'Шикарный вкус!', если нет, то надпись'Неплохо!'. Когда одну группу ввожу, то всё работает, а если несколько, то нет. Почему? И как сделать так, чтобы работало с несколькими группами(выводилась надпись 'Шикарный вкус!') ?

great_groups=['Rainbow', 'Ария','Metallica','Manowar', 'Queen']

st=input('Одна из Ваших любимых групп? ')
if st in great_groups:
    print('Шикарный вкус!')
else:
    print('Неплохо!')

введите сюда описание изображения


Ответы (2 шт):

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

Как на счет такого варианта?

great_groups=['Rainbow', 'Ария','Metallica','Manowar', 'Queen']

st=input('Одна из Ваших любимых групп? ').split()

if list(set(st) & set(great_groups)):
  print('Отличный вкус')
else:
  print('Неплохо!')

введите сюда описание изображения

→ Ссылка
Автор решения: Эникейщик

Лучше проверять наоборот - входит ли хотя бы одна из групп в строку, которую ввел пользователь:

great_groups=['Rainbow', 'Ария','Metallica','Manowar', 'Queen']

st=input('Одна из Ваших любимых групп? ').lower()
for group in great_groups:
    if group.lower() in st:
        print('Шикарный вкус!')
        break
else:
    print('Неплохо!')

Но нужно понимать, что если в списке есть, скажем, "Black", а пользователь ввел "Black Sabbath", то будет найдено совпадение, т.к. "black" входит в строку "black sabbath".

Обратите внимание на lower(). Это приводит строку к нижнему регистру, в результате "manowar" и "MaNoWaR" будут считаться равными.

→ Ссылка