2016-08-09 1 views
1

Я использую символы в слове для поиска ключей словаря. Словарь: SCRABBLE_LETTER_VALUES: {'a': 1, 'b': 3, ...} и т. Д.Возврат значения dict с переменной Key

Вот мой неполный код:

""" 
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""") 

Сейчас этот код является неполным, потому что я все еще учусь питона, так что я все еще думаю через эту проблему, но я застрял на аспекте возвращая значение с ключом, который изменяет каждую итерацию.

Возможно, я мог установить c равным ключу, который он соответствует, а затем вернуть значение, но я не уверен, как это сделать. Кроме того, я хотел проверить, действительно ли я нахожусь в правильном мыслительном процессе.

Just FYI эта база кода действительно входит в цикл успешно, я просто не могу получить значение.

Спасибо за совет!

+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 

 Смежные вопросы

  • Нет связанных вопросов^_^