所以我试图创建一个AI只是为了好玩,但遇到了一个问题。目前,当您说Hi
时,它会说Hi
。如果您说不知道的内容,例如Hello
,它将要求您定义它,然后将其添加到字典变量knowledge
中。然后,每当您说出Hello
时,它都会将其翻译成Hi
并说出Hi
。
但是,我希望它遍历您定义为hi
的内容,并说一个随机的意思是hi
。因此,如果您将Hello
,What's Up
和Greetings
都说成hi,则可以说出其中的任何一个并返回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
答案 0 :(得分:1)
需要解决的事情是只有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
答案 1 :(得分:0)
您可以执行以下操作:
knowledge = {"hi": ["hi"]}
当您的AI得知new_word
的含义与"hi"
相同时:
knowledge["hi"].append(new_word)
现在,如果您现在向您的AI打招呼(这使用了随机模块):
print(random.choice(knowledge["hi"]))