1

私はPythonを学んでいるので、これはおそらく非常に簡単です。辞書のキーに一致する値を見つけて合計しようとしています。私は値を見つけるコードを書き、それを印刷することができます (これを Online Python Tutor でテストして何が起こるかを確認しました) しかし、これを正しいスコアを返す合計スコアとして取得する方法がわかりません (6 )。これは現時点では関数ではないことを知っています。

    SCRABBLE_LETTER_VALUES = {
        'a': 1, 'b': 3, 'c': 3, 'd': 2, 'e': 1, 'f': 4, 'g': 2, 'h': 4, 'i': 1, 'j': 8, 'k': 5, 'l': 1, 'm': 3, 'n': 1, 'o': 1, 'p': 3, 'q': 10, 'r': 1, 's': 1, 't': 1, 'u': 1, 'v': 4, 'w': 4, 'x': 8, 'y': 4, 'z': 10
    }
word ='tact'
score =0

for i in range(len(word)):
    for letter,score in SCRABBLE_LETTER_VALUES.items():
        if letter == word[i]:
            print score
4

2 に答える 2

5
>>> sum(SCRABBLE_LETTER_VALUES[l] for l in word)
6

ここ:

  1. for l in wordword;の文字を繰り返します。
  2. SCRABBLE_LETTER_VALUES[l]の対応するエントリを取得しますSCRABBLE_LETTER_VALUES
  3. sum(...)それらを追加します。

内部の構造はジェネレータ式sum()と呼ばれます。

于 2013-03-02T18:10:54.343 に答える
1

私があなたなら、次のコードを使用します。

score = 0
word = 'tact'
for letter in word:
    score += SCRABBLE_LETTER_VALUES[letter]
print score

たとえば、NPE で言及されている方法など、より効果的な方法もありますが、初心者の場合は、この方法を使用 (および理解) することをお勧めします。


上記のコードが行ごとに行うこと:

1) 最初にfor-loop を使用して、あなたの各文字を反復処理しますword:

for letter in word:

2)文字ごとに、次のようにscore定義した対応する量だけ変数を増やします。SCRABBLE_LETTER_VALUES

score = score + SCRABBLE_LETTER_VALUES[letter]

これは、次のように簡単に記述できます+=

score += SCRABBLE_LETTER_VALUES[letter]

3) 最後にスコアを出力します。

print score
于 2013-03-02T18:11:07.737 に答える