2016-08-09 10 views
1

私は単語の文字を使って辞書のキーを検索しています。辞書はSCRABBLE_LETTER_VALUES:{'a':1、 'b':3、...}などです。ここで変数キーでdict値を返す

は私の不完全なコードです:私はまだのpythonを学んでいるので、私はまだこの問題を通して考えていますが、私は返すの側面に貼り付けられていますので、

""" 
Just a test example 
word = 'pie' 
n = 3 
""" 

def get_word_score(word, n): 
""" 
Returns the score for a word. Assumes the word is a 
valid word. 

The score for a word is the sum of the points for letters 
in the word multiplied by the length of the word, plus 50 
points if all n letters are used on the first go. 

Letters are scored as in Scrabble; A is worth 1, B is 
worth 3, C is worth 3, D is worth 2, E is worth 1, and so on. 

word: string (lowercase letters) 
returns: int >= 0 
""" 
score = 0 
for c in word: 
    if SCRABBLE_LETTER_VALUES.has_key(c): 
    score += SCRABBLE_LETTER_VALUES.get("""value""") 

は今、このコードは不完全です各反復を変更するキーを持つ値。

私は、おそらく私はそれが一致するキーに等しいと設定し、値を返すことができたかもしれませんが、私はそれを行う方法がわかりません。また、私は実際に正しい思考過程にいるのかどうかを確認したかったので、話しました。

このコードベースは正常にループに入りますが、単に値を取得できません。

アドバイスをいただきありがとうございます。

+0

2と4のスペースインデントをミックスしていますか? – Julien

+0

あなたは正しいです!私はただそれを修正した。ありがとう – Chris

+0

他の問題? – depperm

答えて

2

次の操作を行うことができます。辞書は、それが含まれている場合

score = 0 
for c in word: 
    score += SCRABBLE_LETTER_VALUES.get(c, 0) 
return score 

get()は、それ以外の場合は、スニペットに第二引数(0として渡されたデフォルト値を返します、キーの値を返します。 )。

+0

答えを教えていただきありがとうございます。 – Chris

-1

すべての繰り返しでscoreにゼロを入れます。 forループの前に初期化する必要があります。

score = 0 
for c in word: 
    score += SCRABBLE_LETTER_VALUES.get(c, 0) 
return score 
関連する問題