2015-10-31 35 views
-1

我必須編寫這個程序的類,這是我到目前爲止。我運行的代碼很好,但輸入分數後彈出錯誤消息。糟糕的操作數類型爲一元+:'str'平均測試分數

def main(): 
    score_1_ = input('Enter score 1:') 
    name_1_ = input('Enter name 1:') 
    score_2_ = input('Enter score 2:') 
    name_2_ = input('Enter name 2:') 
    score_3_ = input('Enter score 3:') 
    name_3_ = input('Enter name 3:') 
    score_4_ = input('Enter score 4:') 
    name_4_ = input('Enter name 4:') 
    score_5_ = input('Enter score 5:') 
    name_5_ = input('Enter name 5:') 

    print('Name\t\tnumeric grade\tletter grade') 
    print('-------------------------------------------') 
    print(name_1_ + '\t\t', score_1_ , + '\t\t',determine_grade(score_1_)) 
    print(name_2_ + '\t\t', score_2_ , + '\t\t',determine_grade(score_2_)) 
    print(name_3_ + '\t\t', score_3_ , + '\t\t',determine_grade(score_3_)) 
    print(name_4_ + '\t\t', score_4_ , + '\t\t',determine_grade(score_4_)) 
    print(name_5_ + '\t\t', score_5_ , + '\t\t',determine_grade(score_5_)) 
    print('------------------------------------------ ') 

    print('Average score: ') 


    test_average = (score_1_ + score_2_ + score_3_ + score_4_ + score_5_)/5.0 

def calculate_average(): 
    average = (s1 + s2 + s3 + s4 + s5/5.0) 

def determine_grade(): 
    if score_1_ > 90: 
     return 'A' 
    elif score_2_ > 80: 
     return 'B' 
    elif score_3_ > 70: 
     return 'C' 
    elif score_4_ > 60: 
     return 'D' 
    else: 
     score_5_ > 50 
     return 'F' 

main() 

我遇到的問題是這樣的

回溯(最近通話最後一個): 文件 「C:/Users/Brandon/Desktop/m5.py」,第69行,在 主( ) 打印(name_1_ +'\ t \ t',score_1_,+'\ t \ t',determine_grade(score_1_))的文件「C:/Users/Brandon/Desktop/m5.py」,第41行,主 TypeError:錯誤操作數類型爲一元+:'str'

+2

仔細看看'print(name_1_ +'\ t \ t',score_1_,+'\ t \ t',determine_grade(score_1 _))'這一行。 – James

+0

您是否創建了另一個帳戶,或者是這個具有相同作業的其他人員? –

+0

這是相同的[作業](http://stackoverflow.com/questions/33454782/ask-user-for-names-scores-for-5-students-then-create-a-table-from-the-data ?noredirect = 1#comment54696312_33454782)這個人做的。 –

回答

0

由於這是您的 hom我不會發布完整的工作計劃,但我會幫你解決一些問題。

我建議您從scorename變量名中刪除尾部下劃線,因爲它們只是使代碼顯得混亂。所以,你的輸入代碼應該是這樣的:

name_1 = input('Enter name 1:') 
score_1 = float(input('Enter score 1:')) 

如果分數全是數字,然後更改floatint。我已將name放在score之前,因爲我認爲這樣做更有意義。


主印刷部的線條看起來應該是這樣:

print(name_1, '\t\t', score_1, '\t\t', determine_grade(score_1)) 


你有一些代碼正確計算平均水平,但你永遠不打印。您需要:

test_average = (score_1 + score_2 + score_3 + score_4 + score_5)/5.0 
print('Average score:', test_average) 

擺脫calculate_average()功能的,因爲你沒有真正調用它。反正它不起作用,因爲你沒有在任何地方定義s1,s2等,並且它的)在錯誤的地方。


下面是一些確定等級的代碼。我已經改變了>>=因爲通常你會得到一個「A」,如果你的分數是90%或更高,一個「B」,如果你的分數是至少80%,低於90%等

def determine_grade(score): 
    if score >= 90: 
     return 'A' 
    elif score >= 80: 
     return 'B' 
    elif score >= 70: 
     return 'C' 
    elif score >= 60: 
     return 'D' 
    else: 
     return 'F' 

你現在擁有一切你需要的工作程序。

請注意,如果您使用循環和列表,則可以使您的代碼lot更加緊湊。

+0

謝謝你的幫助,我想出了一切! –

相關問題