试图匹配列表中的两个连续单词
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_input
有 n
个元素,它们的索引在 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_input
在 i
和 i+1
的元素(即 独占 i+2
).
我正在尝试创建一个非常基本的聊天机器人,但事实证明这有点困难。它使用的其中一件事是单词的顺序;例如,'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_input
有 n
个元素,它们的索引在 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_input
在 i
和 i+1
的元素(即 独占 i+2
).