2015-08-26 69 views
0

嗨,我正在進行Codecademy練習9/15。目標是創建一個拼字遊戲函數,該函數將字符串作爲輸入,然後返回該單詞的分數。創建一個將字符串作爲輸入並返回該字的分數的Python拼字遊戲函數

他們給你一個字典開始,這是我搜索「如何循環訪問字典並添加值」在谷歌迄今爲止。

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} 




1) total = 0 # takes your input word value and saves it to total 


2) def scrabble_score(x):  # defining function name 
3)  for i in score.values(): # loops through score   
4)   total += i   # sums up your input key value 
5)  return i 

該代碼不斷拋出一個局部變量總誤差。

這是否意味着總變量不能與scrabble_score(x)函數一起使用?

+1

你也有一個不同的問題。請注意,您從不在函數中使用變量'x',這意味着返回的任何結果都不依賴於輸入單詞。你也許會在函數內部最好聲明'total',這樣每次調用函數時都可以計算出不同的總和。 –

+0

你也正在返回'我',這意味着你只是返回最後一個分數。 –

回答

0

您有total += i,但此時沒有名爲total的變量。考慮在循環之前用total=0進行初始化。或者,將total聲明爲全局變量。

此外,您的循環似乎沒有考慮x的值,因此它所要做的就是計算所有可能分數的總和。

然後返回索引而不是總數。

3

你需要把total = 0的功能,而你通過輸入字需要循環,然後從字典中添加的每個字母的得分。您還需要返回total,而不是i

SCORES = {"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 
    for letter in word: 
     total += SCORES[letter] 
    return total 

這裏是另一種方式來做到這一點,要記住的未來:

def scrabble_score(word): 
    return sum(SCORES[letter] for letter in word) 
+0

只是爲了澄清「總計+ = SCORES [信] –

+0

@PRAMOS,我不明白你的意思。 – Cyphase

0

當你使用一本字典,你不通過它需要循環。訪問字典值的方式非常簡單。例如,在詞典中,你有:

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} 

,如果你想獲得「A」所有你需要做的是價值: score['a']這將返回被設置爲關鍵字的值「a」 ,你會得到1。如果你想使用的變量,你可以做這樣的事情:

test='b' 
total=score[test] 
print(total) 

,你會得到:

3 

所有你需要做的就是通過你有,並呼籲每個字母,並添加字符串環他們的總數。 請確保在啓動之前將總數設置爲0,否則您會收到錯誤。一旦你完成循環通過單詞中的每個字母返回總數。

相關問題