Почему бы не использовать встроенную функцию any()
? Мне кажется следующее Pythonic:
foods = ["apples", "oranges", "jerky", "tofu"]
if "chew" in action and any(f in action for f in foods):
print "Yum!"
else:
print "Ew!"
Конечно, простой поиск простых подстрок может дать странные результаты. Например, "jerkeyblahchew"
будет по-прежнему соответствовать категории "Yum!"
. Возможно, вы захотите разделить action
на слова и искать названия продуктов, которые следуют сразу за "chew"
(как @Peter Lyons предлагает в своем ответе для простого случая, когда первые два слова будут "chew X"
).
Игнорируя порядок, вы могли бы сосредоточиться только на разделенных пробелами словах (и далее игнорировать заглавные / строчные буквы), используя что-то вроде следующего:
foods = ["apples", "oranges", "jerky", "tofu"]
action_words = set(word.lower() for word in action.split())
if "chew" in action_words and any(f in action_words for f in foods):
print "Yum!"
else:
print "Ew!"