2016-08-24 140 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,比如“我很痛苦,我受了很多伤害”将在这里打印“东西在这里”两次... –

相关问题