我只是在学习Python,所以这可能非常简单。我试图找到与字典中的键匹配的值并将其添加。我已经编写了找到值的代码,我可以将其打印出来(在在线Python导师中进行测试,看看会发生什么)但是我无法弄清楚如何将这个值作为总得分返回正确的得分(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
答案 0 :(得分:5)
>>> sum(SCRABBLE_LETTER_VALUES[l] for l in word)
6
下面:
for l in word
遍历word
; SCRABBLE_LETTER_VALUES[l]
获取SCRABBLE_LETTER_VALUES
; sum(...)
将它们加起来。 sum()
内的构造称为generator expression。
答案 1 :(得分:1)
如果我是你,我会使用这段代码:
score = 0
word = 'tact'
for letter in word:
score += SCRABBLE_LETTER_VALUES[letter]
print score
还有更有效的方法,例如NPE提到的方法,但如果你只是初学者,我宁愿使用(并理解)这种方法。
以上代码的作用,逐行:
1)首先,我们使用for
循环来迭代word
中的每个字母:
for letter in word:
2)对于每个字母,我们将score
变量增加您在SCRABBLE_LETTER_VALUES
中定义的相应金额,如下所示:
score = score + SCRABBLE_LETTER_VALUES[letter]
使用+=
:
score += SCRABBLE_LETTER_VALUES[letter]
3)最后我们打印得分:
print score