Как выбрать случайный ключ с общими значениями? - PullRequest
0 голосов
/ 10 октября 2018

поэтому я пытаюсь создать ИИ просто для удовольствия, но я столкнулся с проблемой.В настоящее время, когда вы говорите Hi, он скажет Hi назад.Если вы скажете что-то, чего он не знает, например, Hello, он попросит вас определить его, а затем добавить в словарную переменную knowledge.Затем всякий раз, когда вы говорите Hello, он переводит его в Hi и говорит: Hi.

Но я хочу, чтобы он перебрал то, что вы определили как hi, и произнесет случайную вещьэто означает hi.Так что, если вы скажете, что Hello, What's Up и Greetings означают «привет», то сработает сказать любое из них и вернет Hi.Но как мне заставить его сказать либо Hi, Hello, What's Up, либо Greetings, когда он их узнает?(только примеры)

Я пробовал это:

def sayHello():
  for index, item in enumerate(knowledge):
    if knowledge[item] == 'HI':
      print(knowledge[index] + "! I'm Orion!")

Однако я получаю эту ошибку:

Traceback (most recent call last):
  File "python", line 28, in <module>
  File "python", line 12, in sayHello
KeyError: 0

Ответы [ 2 ]

0 голосов
/ 10 октября 2018

Первое, что вам нужно, это ваш первоначальный словарь с hi.Тогда мы говорим что-то нашему другу.Мы проверяем все значения, если нашей фразы там нет, мы просим определить эту фразу.Мы создаем новый ключ с этим определением вместе с пустым списком по умолчанию.Затем мы добавляем фазу в этот список.Иначе, мы ищем, в каком списке значений находится наша фраза, и выбираем случайное слово из этого списка.

from random import choice

knowledge = {'hi': ['hi']}
while True:
    new = input('Say something to HAL: ')
    check = list(*knowledge.values())
    if new.lower() not in check:
        key = input('Define {} for me: '.format(new))
        knowledge.setdefault(key.lower(), [])
        knowledge[key].append(new.lower())
    else:
        for k, v in knowledge.items():
            if new.lower() in v:
                print(choice(v).title())
Say something to HAL: hi 
Hi
Say something to HAL: hey
Define hey for me: hi
Say something to HAL: hey
Hey
Say something to HAL: hey
Hi
0 голосов
/ 10 октября 2018

Вы можете сделать что-то вроде этого:

knowledge = {"hi": ["hi"]}

И когда ваш ИИ узнает, что new_word означает то же самое, что и "hi":

knowledge["hi"].append(new_word)

Итак, если выТеперь скажите привет вашему AI (используется случайный модуль):

print(random.choice(knowledge["hi"]))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...