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

trying to match match two consecutive words in a list

我正在尝试创建一个非常基本的聊天机器人,但事实证明这有点困难。它使用的其中一件事是单词的顺序;例如,'is that' 表示可能有问题,而 'that is' 表示信息。所以我正在尝试编写一些代码来同时查找两个词,但这不是问题所在。

正如您在下面看到的,它有时会生成一个等于 len(user_input) 的数字,这个 returns 这个词与列表中的第一个条目相匹配句子的第一个词和最后一个词。我该如何阻止呢?它们必须是连续的,这就是问题所在。

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]

Python 列表从 0 开始索引,因此如果 user_inputn 个元素,它们的索引在 0, 1, ..., n-1。如果你想随机 select 两个连续的元素,你需要第一个被索引在 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) returns 一个从 a 到 b inclusive 的均匀分布的随机整数(由于某些原因与 NumPy 的等效方法不同),并且切片 [i:i+2] returns user_inputii+1 的元素(即 独占 i+2).