假设我问用户原始输入,他们说:“这是一条消息。”如果该原始输入包含单词“message”,则它将在此之后执行操作。我能看出这是怎么做到的吗?
答案 0 :(得分:8)
基于@knitti的评论,问题是你需要先将句子分成单词,然后检查:
term = "message" #term we want to search for
input = raw_input() #read input from user
words = input.split() #split the sentence into individual words
if term in words: #see if one of the words in the sentence is the word we want
do_stuff()
否则,如果您有“那是经典之作”的句子并且您试图检查它是否包含单词“ass”,则会错误地返回True。
当然,这仍然不是很完美,因为那时你可能不得不担心像删除标点符号而不是(比如,等等),因为否则句子“那个是经典的”。搜索“经典”时仍会返回False(因为最后的句号)。而不是重新发明轮子,这是一篇关于从Python句子中删除标点符号的好文章:
Best way to strip punctuation from a string in Python
还要考虑区分大小写,因此您可能希望在进行搜索之前将raw_input
结果和搜索字词更改为小写。您只需使用lower()
类上的str
函数即可轻松完成此操作。
这些问题似乎总是很简单......
答案 1 :(得分:1)
这当然是一个非常简单的例子:
if "message" in raw_input():
action()
如果您需要将不同的单词映射到不同的操作,那么您可以执行以下操作:
# actions
def action():
print "action"
def other_action():
print "other action"
def default_action():
print "default action"
# word to action translation function
def word_to_action(word):
return {
"message": action,
"sentence": other_action
}.get(word, default_action)()
# get input, split into single words
w = raw_input("Input: ").split()
# apply the word to action translation to every word and act accordingly
map(word_to_action, w)
请注意,这也为输入不包含任何触发词的情况定义了默认操作。
有关上述映射习惯用法的更多详细信息,请参阅here,这实际上是Python实现'switch statement'的方式。
答案 2 :(得分:0)
if "message" in sentence:
do_action()
答案 3 :(得分:0)
sentence = input('Enter the sentence: ').split()
split()方法将句子逐字地打断并放入列表中。
user_input = input('Enter the word to find: ')
for word in range(len(sentence)):
if user_input in sentence:
print('Word Prensent in sentence')
break
if user_input not in sentence:
print('word not present in sentence')
break