2

基本上我有一个用户输入一个句子

例如。“你好吗?”

从一个大列表中,它将“are”替换为“am”,将“you”替换为“I”。返回:

“你好,我怎么样?”

问题是我不知道该怎么做。

所以我的清单看起来有点像reflections = [["I, you"],["are","am]] ---> etc.

到目前为止,我有一些代码可以收集用户的原始输入,然后调用这个函数来回复它。

def reflects_users_string(reply):
    reply_list = reply.split()
    for _ in reply_list
       if ???? 
           ????
            ???? 
   else 
       print "i don't understand"

据我了解(这里是菜鸟),它将用户输入转换为一个列表,然后将该列表中的每个项目与“反射”列表中的项目进行比较,然后将一个列表中的相同字符串替换为它旁边的字符串,例如。“是”与“我”

我一直在玩各种方法来做到这一点,但似乎无法弄清楚

4

2 回答 2

0

到目前为止,这是一个好的开始。至于下一步,对所有单词的映射做一个大字典,查找该字典中的每个单词,如果有替换就替换它。

于 2013-04-03T11:36:59.507 回答
0

尝试学习使用列表推导式,这是在 make 迭代中过滤列表的有效方法。

让我们尝试用列表推导解决您的问题:

#first we need to create mappings in a dict for your reflections
reflect = {
    'you': 'I',
    'are': 'am'
}

# After we read user input
user_input = 'hello, how are you ?'


#Now look how we can replace all words in user_input from reflect with one line
reflected = [word for word in [reflect.get(key, key) for key in user_input.split()]]

print ' '.join(reflected)

让我们分析一下列表推导:

  1. 首先,我们将用户输入拆分为一个列表user_input.split()

  2. 然后我们遍历用户输入的词for key in user_input.split()

  3. 对于用户输入单词中的每个单词,我们查询反射字典。Using reflect.get(key, key)是一种查询reflect字典中键的方法,如果我们找不到键,key则返回默认值。

  4. 最后,我们用[word for word in [getting reflected words from user input and a default value of the same word if we can't find it's reflection]]

瞧!

于 2013-04-03T12:55:58.607 回答