如何检查输入的任何部分是否在python中的列表的一部分

时间:2018-09-21 04:56:38

标签: python

所以我想做一个讲笑话的机器人,但是我在检查输入的任何部分是否在单独列表中时遇到了麻烦。例如(注意:这都是一个while循环):

punWords = [pun, Puns]
userInput = input('What kind of jokes do you want to hear?')

elif userInput in punWords:
     print(random.choice(punJokes))
     print(random.choice(jokeResponses))
     print(' ')
     jokeFunc2()
else:
     print('Sorry I dont know any of these jokes')

我遇到的问题是,如果用户输入诸如“我想听到一个双关语”之类的信息,则它会遍历并将每个单词与双关语进行比较,如果不匹配,则会显示"Sorry I don't know any of these jokes"消息这样输出最终看起来像这样:

  

“抱歉,我没有这些笑话”

     

“抱歉,我没有这些笑话”

     

“抱歉,我没有这些笑话”

     

“抱歉,我没有这些笑话”

     

“抱歉,我没有这些笑话”

     

“插入双关语笑话”

我想发生的是,如果输入不匹配其他任何单词,它只会显示错误消息。非常感谢您的帮助,如果帖子做得不好,我们也很抱歉(这是我第一次在任何类型的论坛上发帖)。

2 个答案:

答案 0 :(得分:0)

您可以执行的一种方法是计算比赛的次数。然后,如果匹配项为零,则打印错误消息。像这样:

if userInput in punWords:
   matchedWords += 1

然后在while循环之后

if matchedWords:
   # do your thing
else:
   print ("Sorry I don't know any of these jokes")

答案 1 :(得分:0)

基本上,您正在寻找两个列表(双关语列表和输入的单词列表)之间的交集,可以使用Python集执行该交集:

words = userInput.split()
if (set(words) & set(punWords)):
    print(random.choice(punJokes))

或更简单地演示:

a = [1,2,3]
b = [3,4,5]
print(list(set(a) & set(b))) #result: [3]