所以我想做一个讲笑话的机器人,但是我在检查输入的任何部分是否在单独列表中时遇到了麻烦。例如(注意:这都是一个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"
消息这样输出最终看起来像这样:
“抱歉,我没有这些笑话”
“抱歉,我没有这些笑话”
“抱歉,我没有这些笑话”
“抱歉,我没有这些笑话”
“抱歉,我没有这些笑话”
“插入双关语笑话”
我想发生的是,如果输入不匹配其他任何单词,它只会显示错误消息。非常感谢您的帮助,如果帖子做得不好,我们也很抱歉(这是我第一次在任何类型的论坛上发帖)。
答案 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]