Как быстро проверить соответствие строки списку?
Сам себе придумал задачу, и не могу решить. В общем идея в том, что дан список рок групп в списке, и если пользователь ввёл хотя бы одну из них, то выдаётся надпись 'Шикарный вкус!', если нет, то надпись'Неплохо!'. Когда одну группу ввожу, то всё работает, а если несколько, то нет. Почему? И как сделать так, чтобы работало с несколькими группами(выводилась надпись 'Шикарный вкус!') ?
great_groups=['Rainbow', 'Ария','Metallica','Manowar', 'Queen']
st=input('Одна из Ваших любимых групп? ')
if st in great_groups:
print('Шикарный вкус!')
else:
print('Неплохо!')
Ответы (2 шт):
Как на счет такого варианта?
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" будут считаться равными.

