AKA 的正确版本:
if ['hi', 'hello', 'greetings'] in userMessage:
print('Hello!')
我尝试了上面显示的内容,但它说它不能使用列表,它必须使用单个字符串。如果我将数组设置为对象/变量,同样的事情。如果我使用“或”,它似乎并不完全有效。
AKA 的正确版本:
if ['hi', 'hello', 'greetings'] in userMessage:
print('Hello!')
我尝试了上面显示的内容,但它说它不能使用列表,它必须使用单个字符串。如果我将数组设置为对象/变量,同样的事情。如果我使用“或”,它似乎并不完全有效。
如果目标只是说明是否有任何已知列表出现在 中userMessage
,并且您不在乎它是哪一个,请与生成器表达式一起使用any
:
if any(srchstr in userMessage for srchstr in ('hi', 'hello', 'greetings')):
当它被击中时会短路,所以如果hi
出现在输入中,它不会检查其余的,并立即返回True
。
如果必须将单词作为单个单词找到(因此userMessage = "This"
应该是错误的,即使hi
出现在其中),则使用:
if not {'hi', 'hello', 'greetings'}.isdisjoint(userMessage.split()):
它也会短路,但方式不同;它迭代userMessage.split()
直到它匹配关键字之一,然后停止并返回False
(not
翻转到)True
,仅当没有单词匹配关键字时才返回True
(翻转到)。False
not
你可以做:
found = set(['hi','hello','greetings']) & set(userMessage.split())
for obj in found:
print found
如果您也在寻找多个单词
您还可以使用 Set 比较多个元素:
if set(['hi', 'hello', 'greetings']) <= set(userMessage.split()):
print("Hello!")
但是要小心使用 split(),一旦它不会避免标点符号。因此,如果您的 userMessage 类似于“嗨,你好,问候”。它会将单词与 ["hi,", "hello,", "greetings."] 进行比较