2011-02-04 58 views
2

我對Python非常陌生,我需要編寫一個函數,它需要一個字母等級(a,b,c,d,f,可能帶有+或 - )並返回一個數字等級。值是4,3,2,1,0。所以A會是4.0,而B會是3.0。 A +會使數字等級值增加0.3,A-將數字等級減少0.3。大寫和小寫都應該可以使用。一些例子。字母等級函數

>>> letter2number('A-') 
3.7 

>>> letter2number('B+') 
3.3 

>>> letter2number('D') 
1.0 

>>> letter2number('a+') 
4.3 

我不知道從哪裏開始編碼,我一直在尋找一些有用的代碼。

+2

使用dict來存儲A-D +之間的映射 - 問題變成一個簡單的條件。 – Rozuur 2011-02-04 10:41:35

回答

5

Python有一些稱爲字典的東西。這些可以獲取一個值(稱爲「鍵」)並返回與該鍵相關聯的值。這就像在字典中查找某些東西的定義一樣。

例如:

test = { 'a': 4.0, 'b': 3.0 } 

上面創建與所述密鑰 「a」 的值4.0相關聯的詞典,和3.0用密鑰 「b」。您可以使用[]運營商查找值:

print test["a"] 
4.0 

很明顯這可怎麼擴展以實現您的所有需求。

0

好問題。這裏有幾點:

你可以蠻力。字典可以容納所有可能的字母代碼爲鍵和牌號爲值:

mygrades = {"a+": 4.3, "a": 4.0, "a-": 3.7 } # etc. 

你不得不您的輸入轉換成小寫,所以它不會對「A +」失敗。並且您想使用try...except KeyError:塊來捕獲非法參數。

如果你讓整個事情更具可定製性,那會更好一點。例如,您可以定義best = 4.0, worst= 1.0, step = -1.0, between = 0.3並通過查看參數的第一個字符來計算結果,檢查後面是否有+-,並將所有這些加在一起。

0
>>> grades = {'a':4, 'b':3, 'c':2, 'd':1, '+':0.3, '-':-0.3} 
>>> sum([grades[x.lower()] for x in 'c+']) 
2.3 
>>> sum([grades[x.lower()] for x in 'D-']) 
0.7 
>>> sum([grades[x.lower()] for x in 'A+']) 
4.3 

由於這是功課:要弄清楚它是如何工作的,並改變它,這樣它留作練習:)功能

這不驗證坡度是否是語法正確的,同時也將使用'等級'aBBa,-B+CA++++