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"

私が理解していることから(ここではnoob)、ユーザーの入力をリストに変換し、そのリストの各アイテムを「反射」リストのアイテムと比較し、1つのリストの同一の文字列を次の文字列に置き換えます。「ある」と「ある」

これを行うためにあらゆる種類の方法で遊んでいますが、それを理解できないようです

4

2 に答える 2

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. ユーザー入力単語の各単語に対して、reflect dict をクエリします。使用 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 に答える