我的代码:
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'是否在我的列表中并从那里继续。
答案 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的方法。