如何在python中找到用户输入的关键字?

时间:2016-02-28 15:33:44

标签: python

key_words = ("screen", "power", "wifi")

user_input = input("Type: ")

if user_input in key_words:
    print ("you should do this...")

当用户输入key_words中的任何内容时,它都会起作用,但如果用户在句子中输入它,则其工作方式如下:

Type: screen is not working
>>> 

它应该找到关键字" screen"并输入yes但它只是空白。我知道我必须分解用户的响应但是我如何为最近的python做这个?

5 个答案:

答案 0 :(得分:2)

对于any来说,这看起来不错。您想迭代您的句子并检查该列表中是否存在单词。如果有" ANY"匹配,返回true:

key_words = ("screen", "power", "wifi")

user_input = input("Type: ")

if any(i in key_words for i in user_input.split()):
    print("you should do this...")

你也不需要对str进行case,因为它已经为你提供了一个字符串。所以我删除了它,这是不必要的。

正如评论中所提到的,事实上你在条件语句的末尾有一个语法问题。

答案 1 :(得分:1)

由于split()返回列表而不是单个值,因此必须单独测试每个元素(在循环中)。

key_words = ("screen", "power", "wifi")
user_input = input("Type: ")

for word in user_input.split():
  if word in key_words:
    print ("you should do this...")

如果用户输入多个这些关键字,则会打印多条消息。

N.b这是python3。对于python2,请改用raw_input。我还删除了str()函数中的input()

答案 2 :(得分:1)

解决方案可以通过将key_words和user_input语句转换为集合并找到2集之间的交集来实现

key_words = {"screen", "power", "wifi"}

user_input = raw_input("Type: ")

choice = key_words.intersection(user_input.split())
if choice is not None:
    print("option selected: {0}".format(list(choice)[0]))

输出:

Type: screen is not working
option selected: screen

Type: power
option selected: power

答案 3 :(得分:-1)

key_words = ("screen", "power", "wifi")
user_input = input("Type: ")
user_words = user_input.split()

for word in user_words:
     if word in key_words:
          print("you should do this...")

答案 4 :(得分:-1)

您可以使用设置交叉点。

if  set(key_words) & set(user_input.split()):
    print ("you should do this...")

另一个选项

这更容易和不言自明。计算key_words中的每个单词。如果有的话 那些只是说你应该这样做......

any_word =  [ True  for x in user_input.split() if x in key_words]

'''
user_input.split() return type is a list
so we should check whether each word in key_words
if so then True
'''


'''
 finally we check the list is empty
'''

if  any_word :
    print ("you should do this...")