尝试匹配列表中的两个连续单词匹配

时间:2015-03-20 12:57:21

标签: python chatbot

我正在尝试创建一个非常基本的聊天机器人,这一点很难解决。它使用的一个东西是单词的顺序;例如,'is that'表示可能存在问题,而'that is'表示信息。所以我正在尝试编写一些可以同时查找两个单词的代码,但这不是问题。

如下所示,它有时会生成一个等于len(user_input)的数字,这会返回单词以及列表中的第一个条目,该条目匹配句子的第一个和最后一个单词。我怎么阻止这个?它们必须是连续的,这就是问题所在。

user_input = [];
user_input = raw_input('User:')
user_input = user_input.split(' ')

from random import randint
a = randint(0,len(user_input))
print a
b = user_input[a] + user_input[a+1]

1 个答案:

答案 0 :(得分:0)

Python列表从0开始编制索引,因此如果user_input具有n个元素,则会将其编入0, 1, ..., n-1的索引。如果你想随机选择两个连续的元素,你需要在i = 0, 1, ..., n-2之一的第一个被索引,所以第二个是i+1,并且保持在允许的索引范围内。因此,

import random
user_input = 'this is a test string'.split()
n = len(user_input)
i = random.randint(0, n-2)
words = user_input[i:i+2]
print words

['is', 'a']

请注意random.randint(a,b)返回从a到b 包含的均匀分布的随机整数(与NumPy的等效方法不同,出于某种原因),以及切片{{1} }在[i:i+2]user_input处返回i的元素(即i+1处任何元素的独占)。