我需要在循环中添加所有输出数字吗?

时间:2014-08-26 04:00:02

标签: python python-3.x

当我输入一个单词时,例如"测验"我得到了输出:

10
1
1
10

我想要的时候:

22 (Adds all the numbers)

我的解决方法:

SCORES = {
  '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,
}
a = input("Enter word: ")
for b in a:
  c = SCORES[b]
  print(c)

请帮忙! :)

1 个答案:

答案 0 :(得分:1)

你没有总结价值观。您可以按如下方式修改代码:

a = input("Enter word: ")
a = a.strip()
total = 0
for b in a:
  c = SCORES[b]
  total += c
print total

或者,您可以使用sum()和列表理解:

>>> SCORES = {
...   '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 = 'quiz'
>>> sum([SCORES.get(a.lower()) for a in word])
22