2012-05-23 26 views
3

我在這裏不具有特定編碼的問題,但更多關於如何生成特定變量輸出的查詢,而無需使用if語句。生成若干變量的輸出,而不使用if語句

爲了讓這裏更清楚一個例子:史密斯先生給出5分的測驗,分等級爲5-A,4-B,3-C,2-D,1-E,0 -F。創建一個接受測驗分數(1-5)作爲輸入的程序,並打印出相應的成績,而不使用if語句。

所以希望這使得我的困境更加清晰。我正在尋找一種方法將等級(A-F)與相應的測驗分數(1-5)關聯起來,而不使用if語句。我對python還是比較新的,你可以稱我爲一個緩慢的學習者,但任何幫助表示讚賞!

+0

是這個家庭作業? – jamylak

+0

@jamylak是的,它與我的家庭作業有關,但這個例子並不是特定於我的作業,希望這不是問題? – Jertise

+0

是的,我認爲是。 – jamylak

回答

3

你可以使用:

'FEDCBA'[score] 

這是通過字符串'FEDCBA'採取的字符在score位置:F0位置,E在位置1等。

例如:

In [1]: 'FEDCBA'[0] 
Out[1]: 'F' 

In [2]: 'FEDCBA'[5] 
Out[2]: 'A' 
+0

雖然我不是太清楚的陳述「在[1]:」和「出[1]:」是指,我得到的只是你的答案通過使用「FEDCBA」作爲一個完整的字符串和利用他們的立場。感謝您的幫助! – Jertise

+1

@Jertise:'In'和'Out'不是代碼的一部分;他們是IPython提示,顯示我輸入的內容和打印的內容。見http://ipython.org/ – NPE

+0

啊,我得到it..sorry,這還是很新的給我,但你的回答仍然是讚賞,我能得到一個簡單而高效的代碼。 – Jertise

2

使用詞典:

dic={5:'A',4:'B',3:'C',2:'D',1:'E',0:'F'} 
score=int(input()) 
grade=dic.get(score,'invalid input') 
print(grade) 
+0

我得到了很多的答案指我幾乎我所有的問題用字典的,但問題是我沒有通過我的工作,學習和練習在詞典的功能。我怪我的文字,但我仍然感謝你的回答,因爲我對字典現在有什麼瞭解。 – Jertise

+0

在這裏獲得關於它們的基本概念:http://docs.python.org/tutorial/datastructures.html#dictionaries –

6

最直接,最靈活的方式是使用字典

>>> score_grade_mapping = {6: 'A+', 5: 'A', 4: 'B', 3: 'C', 2: 'D', 1: 'E', 0: 'F'} 
>>> score_grade_mapping[4] 
'B' 
>>> score_grade_mapping[6] 
'A+' 

雖然這僅僅是一個數字序列,從零開始,映射到單個l您可以使用字符串索引更有效地(儘管不太明顯)對字符串執行此操作。

>>> score_grade_mapping = 'FEDCBA' 
>>> score_grade_mapping[4] 
'B' 

如果你需要一個比一個字母,但仍與一系列從零起分數,你可以使用一個列表(可變)或元組(不可變的,因此,對於這樣的事情更有效在這裏你不與索引改變它):

>>> score_grade_mapping = 'F', 'E', 'D', 'C', 'B', 'A', 'A+' 
>>> score_grade_mapping[4] 
'B' 
>>> score_grade_mapping[6] 
'A+'