查找用户输入是否包含列表中的关键字

时间:2016-07-17 03:26:34

标签: python python-2.7

我的代码:

positiveList = ['love', 'nice', 'relaxing', 'okay']
negativeList = ['hate', "don't like", 'not good']

print "How is the weather?"

answer = str(raw_input())

if answer in positiveList:
    print "Pass"
else:
    print "FAIL"

我想弄清楚的是,如果用户输入:'我喜欢它' 然后我就可以检查字符串'love'是否在我的列表中并从那里继续。

5 个答案:

答案 0 :(得分:1)

如果使用集合,则不需要循环或列表理解:

positiveList = set(('love', 'nice', 'relaxing', 'okay'))

print "How is the weather?"
answer = str(raw_input()).lower()

if set(answer.split()).intersection(positiveList):
    print "Pass"
else:
    print "FAIL"

方法intersection查找answer中同样位于positiveList的任何字词。如果找到任何一个,则两个集合的交集是非空的,因此,作为if条件,评估为True

样品运行

How is the weather?
I Love It
Pass

更多关于集合和intersection

让我们根据上面的答案创建一个集合:

>>> x = set('i love it'.split())
>>> x
set(['i', 'love', 'it'])

现在,让我们与positiveList:

进行交集
>>> positiveList = set(('love', 'nice', 'relaxing', 'okay'))
>>> x.intersection(positiveList)
set(['love'])

两个集合中的intersection是两个集合共有的元素(在本例中为单词)。在这里,他们有共同的love这个词。因此,两个集合中的intersection是一个带有单词love的集合。

以下是两个没有共同词汇的示例:

>>> set(['not good']).intersection(positiveList)
set([])

而且,这是一个他们有两个共同词的例子:

>>> set(['not good', 'love', 'nice']).intersection(positiveList)
set(['love', 'nice'])

答案 1 :(得分:1)

如果您重新使用该模块(如果您对文本执行此操作,我推荐它),您可以这样做:

import re

positiveList = ['love','nice']
answer = input()
passList = [word for word in positiveList if re.search(word, answer)]

上面的一行指定postiveList中与回答passList的单词相匹配的单词。如果你只是想要它打印' PASS' (建议不要使用此代码打印,因为一旦满足条件语句就无法停止该过程),然后将最后一行更改为:

[print('PASS') for word in answer if re.search(word, answer)]

答案 2 :(得分:0)

您应该将代码更改为:

positiveList = ['love', 'nice', 'relaxing', 'okay']
negativeList = ['hate', "don't like", 'not good']

print "How is the weather?"

answer = str(raw_input())
flag = 0
for word in positiveList:
    if word in answer:
        flag = 1
        break
if flag == 1:
    print "PASS"
else:
    print "FAIL"

示例输入和输出:

How is the weather?
Its nice today.
PASS

处理完成,退出代码为0

答案 3 :(得分:0)

一个可能的答案:

positiveList = ['love', 'nice', 'relaxing', 'okay']
negativeList = ['hate', "don't like", 'not good']

print "How is the weather?"

answer = str(raw_input())

if any(word in answer for word in positiveList):
    print "Pass"
else:
    print "FAIL"

请注意,“很好”将在此代码中“传递”。 (它只是看看字符串中的“nice”是否出现。)

另一种方法是将句子分成单词并检查句子中的每个单词,看它是否在positiveList中。这是以某种弱的方式做到这一点的代码......注意它会被标点符号等东西弄糊涂。 (用这种方式将“很好!”分成单词会给你["It's", "nice!"],其中没有一个在列表中。)

positiveList = ['love', 'nice', 'relaxing', 'okay']
negativeList = ['hate', "don't like", 'not good']

print "How is the weather?"

answer = str(raw_input())

words = answer.split()

if any(word in positiveList for word in words):
    print "Pass"
else:
    print "FAIL"

答案 4 :(得分:-1)

这句话,#如果在positiveList中回答:是不正确的,因为如果你输入"我喜欢它,"它会将整个阶段与列表进行比较。使用smarx的方法。