0

我正在尝试创建一个非常基本的聊天机器人,而这一点证明很困难。它使用的一件事是单词的顺序。例如,“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]
4

1 回答 1

0

Python 列表从 0 开始索引,所以如果user_inputn元素,它们的索引在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 的等效方法不同),并且切片[i:i+2]返回user_inputati和的元素i+1(即包括 at 的任何元素i+2)。

于 2015-03-20T13:37:49.880 回答