2013-01-08 27 views
0

我試圖寫一個腳本,允許用戶提交字母等級對棒球的前景,有那些檔次場均基於什麼用戶提交的。Python - 如何基於提供的鍵來平均用戶輸入值?

  1. 用戶輸入級爲
  2. 所有輸入都從lettergrades轉換爲numbergrades所以它們可以被平均一個前景(對於prospect1 B +)。
  3. 前景按從高到低排序。
  4. 成績被重新轉換回字母等級。

我相信我有第2步覆蓋,但我如何完成其​​餘的代碼iffy。

爲了簡化問題,假設我們給出了5個前景的名單。用戶將爲他們分級。隨着每個額外的用戶添加他們的等級輸入,每個潛在客戶的平均等級應該被更新並且他們的等級順序同時被排序。

prospects = ['prospect1', 'prospect2', 'prospect3', 'prospect4', 'prospect5'] 

grades = {'A+':98, 'A':95, 'A-':92, 'B+':88, 'B':85, 'B-':82, 'C+':78, 'C':75} #grading system where A+ = 98, A = 95 etc 

def numbergrade(lettergrade): 
    return grades[lettergrade] #function to convert lettergrade to numbergrade 

你會如何編譯,將每次增加一個元素有一個新的用戶輸入,並在同一時間有檔次匹配正確的前景列表?我應該在這裏使用字典嗎?

回答

0

這將通過列表中的每個迭代的前景,要求一個評級,評級添加到字典「出」。沒有對用戶輸入的驗證,因此您可能希望確保他們輸入的值在您的成績中。

當你想在多個用戶輸入會話平均值,你將需要在這種情況下,我會考慮使用泡椒或數據庫持久性數據變得更加複雜。另一種選擇是在一次會話中接受多個用戶輸入。

prospects = ['prospect1', 'prospect2', 'prospect3', 'prospect4', 'prospect5'] 

grades = {'A+':98, 'A':95, 'A-':92, 'B+':88, 'B':85, 'B-':82, 'C+':78, 'C':75} 

out = {} 

for prospect in prospects: 
    rating = raw_input('Rate prospect {0}'.format(prospect)) 
    out[prospect] = grades[rating] 

print out 
0

首先,如果您想在每次有新輸入時更改平均值,則需要存儲多少個評分。如果A +前景接收一個F的評級,他們的新的評價將是非常不同的,如果他們有1個A +等級或300

您已經爲存儲兩個選項,據我可以告訴。一個是使用元組列表,每個元組看起來像(prospect name, total rating, number of ratings)。這樣做的好處是您可以通過評分輕鬆進行分類。缺點是查找特定的玩家更困難。另一個選項是字典,其中每個鍵都是潛在客戶,每個值都是(total rating, number of ratings)的元組。優點:查找特定的球員很容易。缺點:排序並不合理。

最後,在任何情況下,我會額定電流存儲爲數字,不是字母。這將使平均時更準確。您列表中的第4步應該作爲「整容」步驟完成;不修改前景數據。我可以發佈你想要的示例功能,但我現在正在打電話,所以如果我不需要,我不會。

+0

感謝您的建議。現在讓我們進行第4步以簡化過程(將數字重新轉換爲字母等級)。首先轉換的原因是,前景通常以字母形式進行分級,C爲最低級別(任何較低的級別都不會被認爲是值得期待的)。 我的第一印象是元組列表可以更好地達到目的。你介意發佈一個這樣的示例代碼嗎? – user1927420

+0

編輯時限?我想,今天我學到了。無論如何,pastebin鏈接:http://pastebin.com/EPq3m68D –

相關問題