2016-06-28 107 views
0

我有一个结合的整数每个字符的字母像这样一本字典:增加价值的一个变量

letter_values = {'a': 1, 'b': 3, 'c': 3}

我的程序会要求用户进行输入,迭代在字符串的每个字符,并增加了从词典中尊值到一个叫分数变量,就像这样:

word = raw_input('Please enter your word: ') 
score = 0 
if len(word) == 0: 
    return score 
else: 
    for letter in word: 
     for letter in SCRABBLE_LETTER_VALUES.keys(): 
      char_value = SCRABBLE_LETTER_VALUES.values() 
      score += char_value 

对于我赋值给变量char_value行了,我得到以下错误:

int() argument must be a string or a number, not 'list' 

通过我认为,Python不承认在字典​​中的值是一个整数(?)如果是这样,我该如何将字典的整数添加到变量?

+1

您试图将整个'.values()',它是一个* all values *列表,添加到一个整数中......此外,迭代字典就像绝对没有意义。你不只是想'SCRABBLE_LETTER_VALUES [字母]'? – jonrsharpe

+1

你说得对,代码不好。我的问题现在已经解决了,所以我需要改进它! – Brian

回答

3

values()返回一个列表,而不是具体的值。字典值可以通过方括号来访问,但是。请尝试:

for letter in word: 
    score += letter_values[letter] 
+1

是,或者'letter_values.get(letter,0)'如果OP不确定元素是否出现在字典中。 [为什么dict.get(key)而不是dict \ [key \]?](http://stackoverflow.com/q/11041405) –