2016-09-23 144 views
0

我正在嘗試編寫一個代碼,用戶可以輸入將從列表中拉出數字等級的原始數據,並將該數值與字母等級配對。即:在列表中的第四級是86,那麼它會打印86以及字母B級初學者的簡單Python代碼

這裏是我到目前爲止有:


grades = ['62','68','93','75','89','85'] 

print grades [3] 

def lettergrade (grades): 

    if grades >=90: 
     print('A') 
    elif grades >=80 and grades <90: 
     print('B') 
    elif grades >=70 and grades <80: 
     print('C') 
    elif grades >=60 and grades <70: 
     print('D') 
    else: 
     print('F') 


print lettergrade (grades) 
+1

「這是我迄今爲止:」和...?它做什麼,你期望它做什麼? – Brydenr

+0

您需要在'def lettergrade(等級)下開始縮進一切。你有追溯嗎?顯示它 –

+0

我只是爲你縮進它。請記住,蟒蛇是製表知道 – adhg

回答

1

這應該做到你在找什麼:

grades = [62, 68, 93, 75, 89, 85] 


def LetterGrade(grade): 

    if grade >= 90: 
     result = [grade, 'A'] 
    elif grade >= 80 and grades < 90: 
     result = [grade, 'B'] 
    elif grade >= 70 and grades < 80: 
     result = [grade, 'C'] 
    elif grade >= 60 and grades < 70: 
     result = [grade, 'D'] 
    else: 
     result = [grade, 'F'] 

    return result 

# call LetterGrade for each value in grades array 
for grade in grades: 
    print(LetterGrade(grade)) 

你需要循環的等級陣列中的每個值。此外,嘗試養成遵循PEP 8(Python風格指南)的習慣

+0

專門調出您的代碼會給出錯誤的輸出 - 您必須將LetterGrade參數的名稱或「如果成績> = 90:」更改爲「if grade> = 90:」,當然對於其他如果條件。 – coder

+0

@coder良好的通話,我在手機上,但我繼續前進,並做出了改變。 –

0

的問題,你正在遇到的是grades只包含字符串。 '1'是一個字符串,就像'你好'。在Python中,字符串不會等於數字,因此比較它們將始終是錯誤的。此外,您將grades的整個數字與一個數字進行比較,該數字也將評估爲false。您正在尋找的比較是if(grades[index]>= 90):其中index是您正在查看的任何索引。

lettergrade()中的print()語句只會打印出等級,因此將每個打印語句更改爲`print('LETTER:'+ value)。

此外,該方法lettergrade()將只打印出來的一件事,所以需要有一個循環來調用它多次,多個值:

for value in grades: 
    lettergrade(value) 
0

你必須要小心壓痕,蟒蛇是一種縮進的語言。

試試這個:

# define lettergrade function 
def lettergrade(grades): 
    if grades >=90: 
     return('A') 
    elif grades >=80 and grades <90: 
     return('B') 
    elif grades >=70 and grades <80: 
     return('C') 
    elif grades >=60 and grades <70: 
     return('D') 
    else: 
     return('F') 

grades = ['62','68','93','75','89','85'] 

for grade in grades: # iterate in grades  
    # call to lettergrade function -> lettergrade(grade) 
    print(grade, ' equivalent ', lettergrade(grade)) 
+1

如果你解釋了爲什麼你選擇編寫這段代碼,它可能對OP有幫助。我們的目標應該是幫助OP更像程序員,而不僅僅是爲他/她編寫代碼。 –

0

我很困惑在這裏,如果你想在用戶輸入你爲什麼要值的列表呢?您只需等待用戶輸入並檢查輸入屬於哪個等級即可。請評論如果你想要一些改變!

x = raw_input("Enter Score: ") 
score = float(x) 
try: 
    if grades >=90: 
     print('A', score) 
    elif grades >=80 and grades <90: 
     print('B', score) 
    elif grades >=70 and grades <80: 
     print('C', score) 
    elif grades >=60 and grades <70: 
     print('D', score) 
    else: 
     print('F', score) 

except: 
    print "Error" 
+1

OP使用值列表 – Brydenr