【发布时间】:2014-09-23 20:41:29
【问题描述】:
我刚开始学习python,有点迷茫。为什么这段代码不起作用?当我调用 pie 时,它返回 1 而不是 5。我在这里不明白什么?
score = {"a": 1, "c": 3, "b": 3, "e": 1, "d": 2, "g": 2,
"f": 4, "i": 1, "h": 4, "k": 5, "j": 8, "m": 3,
"l": 1, "o": 1, "n": 1, "q": 10, "p": 3, "s": 1,
"r": 1, "u": 1, "t": 1, "w": 4, "v": 4, "y": 4,
"x": 8, "z": 10}
def scrabble_score(word):
total = 0
word = word.lower()
for letter in word:
total =+ score[letter]
else:
return total
【问题讨论】:
-
应该是
+=。 -
你可以像
sum([score[letter] for letter in word.lower()])一样很好地做到这一点 -
我不明白为什么会有一个没有 if 的 else 子句。取消return语句并消除else:
-
如果@vaultah 的评论没有解释:
=+没有任何意义,所以total =+ score[letter]意味着total = (+ score[letter])。因此,每次循环时,都将total替换为+ score[letter]。最后一个字母得分1,因此您将total替换为+1,即1。 -
实际上我错了documentation。当列表用完时使用。
标签: python iteration for-in-loop