2016-01-05 21 views
2

AKA正確版本的這個列表:檢查Python的輸入包含關鍵字

if ['hi', 'hello', 'greetings'] in userMessage: 
    print('Hello!') 

我想什麼上面顯示,但它說,它不能用鏈表,它必須使用一個單一的字符串。同樣的事情,如果我把數組設置爲一個對象/變量。如果我使用「或」,它似乎完全不起作用。

+3

你想要它的另一種方式..'如果userMessage in ['hi','hello','greetings' ]:' –

+0

按照邏輯進行翻譯。如果在某些消息列表中有「消息」。沒有比這更復雜的了。 –

+0

它遵循相同的英文..'如果項目在listOfItems:' –

回答

4

如果目標僅僅是如果任何已知的名單出現在userMessage說了,你不關心它是哪一個,use anygenerator expression

if any(srchstr in userMessage for srchstr in ('hi', 'hello', 'greetings')): 

它將當它得到一擊,所以如果短路0出現在輸入中,它不檢查其餘部分,並立即返回True

2

你可以這樣做:

found = set(['hi','hello','greetings']) & set(userMessage.split()) 
for obj in found: 
    print found 

,如果你正在尋找多個單詞以及

+1

'set'已經是一個內置的Python類型。只需使用set(lst)',然後一組交集是一個好方法。 –

+1

另外,在我給它一個「+1」之前還有一件事,因爲這是一個正確的答案,所以你的代碼片段中的一行有一個SyntaxError,因爲後面的':' –

0

您也可以使用設置比較多的元素:

if set(['hi', 'hello', 'greetings']) <= set(userMessage.split()): 
    print("Hello!") 

但要小心使用分裂(),一旦將無法避免ponctuation。所以,如果你的userMessage類似於「你好,你好,問候」。它會比較單詞反對[「你好,」,「你好,」,「問候」。]

相關問題