2017-02-20 78 views
-3
VOWELS = 'aeiou' 
CONSONANTS = 'bcdfghjklmnpqrstvwxyz' 
HAND_SIZE = 7 

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 = 'hi' 
SCRABBLE_LETTER_VALUES.get(word) 

我應該得到h的值+我,但會將返回NONE或關鍵錯誤關鍵錯誤

+5

你好像不明白python dicts是如何工作的,你的dict中沒有鍵是'hi',有'h'和'i'鍵,所以你需要遍歷這個詞並執行查找 – EdChum

回答

2

您試圖通過在字典中檢查單詞「hi」來解決它。但是,你需要做的是SCRABBLE_LETTER_VALUES.get(字),而不是,你需要去:

points = 0  
for character in word: 
    points += SCRABBLE_LETTER_VALUES.get(character) 

基本上,這不就是通過可變單詞的每個字母去,並從作品的數量它是值得的點數並將該數字添加到變量點。您可以用我的代碼替換您的SCRABBLE_LETTER_VALUES.get(單詞)。它應該工作。

你也可以使用列表理解。我的意思是:

points = sum([SCRABBLE_LETTER_VALUES[char] for char in word]) 

這將通過每一個字符的話,制定出自己的論點,使所有點的列表中的所有字符。然後它會將列表中的所有數字加起來得出總分數。這更復雜,但看起來更簡單,更緊湊。

我希望這會有所幫助。