AKA正確版本的這個列表:檢查Python的輸入包含關鍵字
if ['hi', 'hello', 'greetings'] in userMessage:
print('Hello!')
我想什麼上面顯示,但它說,它不能用鏈表,它必須使用一個單一的字符串。同樣的事情,如果我把數組設置爲一個對象/變量。如果我使用「或」,它似乎完全不起作用。
AKA正確版本的這個列表:檢查Python的輸入包含關鍵字
if ['hi', 'hello', 'greetings'] in userMessage:
print('Hello!')
我想什麼上面顯示,但它說,它不能用鏈表,它必須使用一個單一的字符串。同樣的事情,如果我把數組設置爲一個對象/變量。如果我使用「或」,它似乎完全不起作用。
如果目標僅僅是如果任何已知的名單出現在userMessage
說了,你不關心它是哪一個,use any
有generator expression:
if any(srchstr in userMessage for srchstr in ('hi', 'hello', 'greetings')):
它將當它得到一擊,所以如果短路0出現在輸入中,它不檢查其餘部分,並立即返回True
。
你可以這樣做:
found = set(['hi','hello','greetings']) & set(userMessage.split())
for obj in found:
print found
,如果你正在尋找多個單詞以及
'set'已經是一個內置的Python類型。只需使用set(lst)',然後一組交集是一個好方法。 –
另外,在我給它一個「+1」之前還有一件事,因爲這是一個正確的答案,所以你的代碼片段中的一行有一個SyntaxError,因爲後面的':' –
您也可以使用設置比較多的元素:
if set(['hi', 'hello', 'greetings']) <= set(userMessage.split()):
print("Hello!")
但要小心使用分裂(),一旦將無法避免ponctuation。所以,如果你的userMessage類似於「你好,你好,問候」。它會比較單詞反對[「你好,」,「你好,」,「問候」。]
你想要它的另一種方式..'如果userMessage in ['hi','hello','greetings' ]:' –
按照邏輯進行翻譯。如果在某些消息列表中有「消息」。沒有比這更復雜的了。 –
它遵循相同的英文..'如果項目在listOfItems:' –