我正在尝试创建一个非常基本的聊天机器人,这一点很难解决。它使用的一个东西是单词的顺序;例如,'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]
答案 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
处任何元素的独占)。