Я строю чат-бота в Python.У меня проблемы с запуском кода - PullRequest
0 голосов
/ 27 мая 2018
import random
userKeywords = {"hi","hello","wassup","what'sup","greetings","sup","henlo","que onda","hola","hey","waddup"}

machineResponses = {"hello", "Hello there, I am a bot", "greetings from inside this computer"}

def machineAnswer(message):
    for key in userKeywords:
        if key == message:
            return random.choice(machineResponses)

def respondTo(message):
    print(machineAnswer(message))
respondTo("hello")

Я создаю чат-бота на python.У меня проблемы с запуском кода.Моя цель - создать функцию, которая ищет в массиве ключевое слово приветствия. Если ключевое слово существует в массиве, бот отвечает аналогичным ответом.Например, если пользователь вводит «hello», бот должен распознать, что hello является одним из ключевых слов приветствия, и распечатать в ответе строку, похожую на «hello», путем случайного выбора ответа из «machineResponses».Я получил следующие ошибки:

print(machineAnswer(message))
File "C:\Users\gilbe\eclipse-workspace\python3.6\BeginnerFiles\ChatBot", line 9, in machineAnswer
return random.choice(machineResponses)

File "C:\Users\gilbe\AppData\Local\Programs\Python\Python36-32\lib\random.py", line 259, in choice
return seq[i]

TypeError: 'set' object does not support indexing

Ответы [ 2 ]

0 голосов
/ 27 мая 2018

Random.choice получает случайный индекс от объекта, но вы используете набор, который не поддерживает индексирование. Вы можете преобразовать свой набор в список и использовать его

Набор простонеупорядоченная коллекция уникальных элементов.Итак, элемент либо в наборе, либо его нет.Это означает, что ни один элемент в наборе не имеет индекса.

import random
userKeywords = {"hi","hello","wassup","what'sup","greetings","sup","henlo","que onda","hola","hey","waddup"}

machineResponses = ["hello", "Hello there, I am a bot", "greetings from inside this computer"]

def machineAnswer(message):
    for key in userKeywords:
        if key == message:
            return random.choice(machineResponses)

def respondTo(message):
    print(machineAnswer(message))
respondTo("hello")

Вывод:

Hello there, I am a bot
0 голосов
/ 27 мая 2018

Вы можете уменьшить итерацию и проверить.Проблема с вашим утверждением была случайной. Выбор не поддерживает заданный объект.

import random
userKeywords = {"hi","hello","wassup","what'sup","greetings","sup","henlo","que onda","hola","hey","waddup"}

machineResponses = list({"hello", "Hello there, I am a bot", "greetings from inside this computer"})

def machineAnswer(message):
    if message in userKeywords:
        return random.choice(machineResponses)

def respondTo(message):
    print(machineAnswer(message))
respondTo("hello")
...