<分区>
AKA 的正确版本:
if ['hi', 'hello', 'greetings'] in userMessage:
print('Hello!')
我试过上面显示的内容,但它说它不能使用列表,它必须使用单个字符串。如果我将数组设置为对象/变量也是一样。如果我使用“或”,它似乎并不完全有效。
<分区>
AKA 的正确版本:
if ['hi', 'hello', 'greetings'] in userMessage:
print('Hello!')
我试过上面显示的内容,但它说它不能使用列表,它必须使用单个字符串。如果我将数组设置为对象/变量也是一样。如果我使用“或”,它似乎并不完全有效。
最佳答案
如果目标只是说明是否有任何已知列表出现在 userMessage
中,而您不关心它是哪一个,use any
用generator expression :
if any(srchstr in userMessage for srchstr in ('hi', 'hello', 'greetings')):
它会在命中时短路,所以如果输入中出现hi
,它不会检查其余部分,并立即返回True
。
如果单词必须作为单独的单词找到(所以 userMessage = "This"
应该是 false,即使 hi
出现在其中),那么使用:
if not {'hi', 'hello', 'greetings'}.isdisjoint(userMessage.split()):
它也会短路,但方式不同;它迭代 userMessage.split()
直到匹配其中一个关键字,然后停止并返回 False
(not
翻转为 True
),仅当没有任何单词与关键字匹配时才返回 True
(由 not
翻转为 False
)。
关于python - 检查 Python 输入是否包含关键字列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34602571/