2016-06-28 112 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) –