5

私はここコーディングの世界では新人で、あまり温かい歓迎を受けていません。オンライン チュートリアルhttp://learnpythonthehardway.org/book/で Python を学ぼうとしています。練習問題 48 と 49 まで、私はこの本を苦労して読み進めることができました。しかし、私は単にできません。可能な単語のレキシコンを作成する必要があること、およびユーザー入力をスキャンしてレキシコン内の何かと一致するかどうかを確認する必要があることは理解していますが、それだけです! 私が知る限り、lexicon というリストを作成する必要があります。

lexicon = [
    ('directions', 'north'),
    ('directions', 'south'),
    ('directions', 'east'),
    ('directions', 'west'),
    ('verbs', 'go'),
    ('verbs', 'stop'),
    ('verbs', 'look'),
    ('verbs', 'give'),
    ('stops', 'the'),
    ('stops', 'in'),
    ('stops', 'of'),
    ('stops', 'from'),
    ('stops', 'at')
]

そうですか?次に何をすればいいのかわからない?リスト内の各項目がタプルと呼ばれることは知っていますが、それは私にとっては何の意味もありません。生の入力を取得してタプルに割り当てるにはどうすればよいですか? 私の言っていることが分かるよね?演習 49 で、彼はレキシコンをインポートし、python の内部で lexicon.scan("input") を出力し、タプルのリストを返します。たとえば:

from ex48 import lexicon
>>> print lexicon.scan("go north")
[('verb', 'go'), ('direction', 'north')]

「scan()」は定義済みの関数ですか、それともレキシコン モジュール内で関数を作成したのですか? 「split()」を使用すると、入力からすべての単語を含むリストが作成されることはわかっていますが、「go」をタプル (「動詞」、「go」) にどのように割り当てますか?

私はちょっと離れていますか?私は多くのことを尋ねていることを知っていますが、私は何時間もあちこちを検索しましたが、これを自分で理解することはできません. 助けてください!私はあなたを永遠に愛します!

4

7 に答える 7

3

リストを使用してレキシコンを作成することはありません。単語をそのタイプにマッピングしているので、辞書を作成します。

これが私が全部を書かずに与えることができる最大のヒントです:

lexicon = {
    'north': 'directions',
    'south': 'directions',
    'east': 'directions',
    'west': 'directions',
    'go': 'verbs',
    'stop': 'verbs',
    'look': 'verbs',
    'give': 'verbs',
    'the': 'stops',
    'in': 'stops',
    'of': 'stops',
    'from': 'stops',
    'at': 'stops'
}

def scan(sentence):
    words = sentence.lower().split()
    pairs = []

    # Iterate over `words`,
    # pull each word and its corresponding type
    # out of the `lexicon` dictionary and append the tuple
    # to the `pairs` list

    return pairs
于 2013-03-15T04:49:21.507 に答える
3

ex48 の指示に基づいて、単語の種類ごとにいくつかのリストを作成できます。最初のテスト ケースのサンプルを次に示します。返される値はタプルのリストであるため、指定された単語ごとにそのリストに追加できます。

direction = ['north', 'south', 'east', 'west', 'down', 'up', 'left', 'right', 'back']

class Lexicon:
    def scan(self, sentence):
        self.sentence = sentence
        self.words = sentence.split()
        stuff = []
        for word in self.words:
            if word in direction:
                stuff.append(('direction', word))
        return stuff

lexicon = Lexicon()

彼は、数字と例外の扱いが異なることに注目しています。

于 2014-05-08T02:35:29.110 に答える
2

最後に私はやった!

lexicon = {
    ('directions', 'north'),
    ('directions', 'south'),
    ('directions', 'east'),
    ('directions', 'west'),
    ('verbs', 'go'),
    ('verbs', 'stop'),
    ('verbs', 'look'),
    ('verbs', 'give'),
    ('stops', 'the'),
    ('stops', 'in'),
    ('stops', 'of'),
    ('stops', 'from'),
    ('stops', 'at')
    }

def scan(sentence):

    words = sentence.lower().split()
    pairs = []

    for word in words:
        word_type = lexicon[word]
        tupes = (word, word_type) 
        pairs.append(tupes)

    return pairs
于 2013-03-20T02:04:39.460 に答える