2016-08-24 56 views
1

我正在編寫一個代碼,要求提供一定數量的問題。 我想讓用戶輸入一個答案,代碼檢查用戶輸入的任何單詞列表中的幾個單詞。檢查用戶輸入是否包含數組中的單詞 - Python 3

keywordlist = ("pain", "suffering", "hurt") 
question1 = input("how are you feeling?") 
if question1.lower() in keywordlist: 
    print("something here") 

我結束了瀏覽stackoverflow的答案,並遇到一篇關於拆分字符串,但我不明白這一點。這是this的問題。

使用這個鏈接我轉我的代碼:

if any(word in Question1 for word in keywordlist.split(",")): 

,但我得到了錯誤:

AttributeError: 'tuple' object has no attribute 'split' 

我是新來的Python和需要的準確的方式簡單化了版本做這個。

+2

你現在的代碼有什麼問題? – Wajahat

+0

@AndrewL。因爲元組比這裏的列表更正確,所以這些值不會被改變。 – karlosss

+0

@karlosss你是什麼意思? –

回答

1

假設你希望用戶輸入一個句子,要檢查是否有字的關鍵字列表:

keywordlist = ("pain", "suffering", "hurt") 
question1 = input("how are you feeling?") 
input_words=question1.lower().split() 
for word in input_words: 
    if word in keywordlist: 
     print("something here") 

if any(word in Question1 for word in keywordlist.split(",")):給你的錯誤,就是因爲你叫在keywordlist這是一個元組的split()方法。所以這個錯誤告訴你到底你做錯了什麼。你想把輸入分成單詞,keywordlist已經包含分成元組的單詞。

+0

謝謝!這是我正在尋找的愚蠢的版本,我很感激它!豎起大拇指(:在這個問題上發佈的兩種方法都奏效!謝謝 –

0

拆分字符串應該工作。你可以拆分空格,以便每個單詞最終成爲列表中的一個元素。像這樣

keywordlist = ("pain", "suffering", "hurt") 
question1 = input("how are you feeling?") 
question_parts = question1.split(" ") 
for part in question_parts: 
    if part.lower() in keywordlist: 
     print("something here") 
+0

要添加到此回覆;如果用戶輸入「我很痛苦」,當你split()輸入時,它會以'(「I」,「am」,「suffering」)這樣的列表結束,因此你可以迭代它並確認每個單詞是否在你的'關鍵詞列表' – Av4t4r

+0

好吧,這實際上工作。我把它放在我的實際代碼中,這個代碼與我用來作爲參考的代碼非常相似,問題是: 如果你用多個關鍵詞回答question1,比如「我很痛苦,我受了很多傷害」將在這裏打印「東西在這裏」兩次... –