0

非常に基本的なチャットボットを作成しようとしていますが、このビットは難しいことがわかります. 使用するものの 1 つは単語の順序です。たとえば、「is that」はおそらく質問があることを示し、「that is」は情報を示します。そこで、2 つの単語を一緒に検索するコードを書き込もうとしていますが、それは問題ではありません。

以下に示すように、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_inputます。連続する 2 つの要素をランダムに選択する場合は、最初の要素のいずれかにインデックスを付ける必要があるため、2 番目の要素は許可されたインデックスの範囲内にとどまります。したがって、n0, 1, ..., n-1i = 0, 1, ..., n-2i+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 の同等のメソッドとは異なります) 均一に分散されたランダムな整数を返し、スライスはatと[i:i+2]の要素を返すことに注意してください(つまり、 atの要素は除外されます)。user_inputii+1i+2

于 2015-03-20T13:37:49.880 に答える