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做这个?
答案 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...")