2017-05-23 64 views
0

我想編碼一個標準偏差項目,並且遇到錯誤,我將在下面留下我的代碼。不知道究竟是什麼導致了這個錯誤,如果任何人可以請留下一個更正或如何解決這個下面,我將不勝感激。Python 3錯誤:TypeError:不支持的操作數類型(s)+ =:'int'和'str'

Billy = { 
    'Homework':[76, 88, 90, 95, 54], 
    'Quiz':[89, 97, 54], 
    'Test':[78, 89] 
} 

Martha = { 
    'Homework':[74, 66, 90, 100, 98], 
    'Quiz':[67, 80, 99], 
    'Test':[88, 98] 
} 

Robert = { 
    'Homework':[89, 76, 65, 99, 87], 
    'Quiz':[88, 98, 73], 
    'Test':[81, 92] 
} 

#Sum 
def grades_sum(homework): 
    total = 0 
    for grade in homework: 
     total += grade 
    return total 

print(grades_sum(Billy)) 

#Average 
def grades_average(grades): 
    sum_of_grades = grades_sum(grades) 
    average = sum_of_grades/float(len(grades)) 
    return average 

它返回以下錯誤:

Traceback (most recent call last): 
    File "python", line 26, in <module> 
    File "python", line 23, in grades_sum 
TypeError: unsupported operand type(s) for +=: 'int' and 'str' 
+0

此代碼不會導致該錯誤。你能否包含實際導致問題的代碼? – Mureinik

+0

你需要指定你正在訪問的字典的哪些元素:編輯this =>作爲作業的成績['Homework']: 您也可以將'Homework'作爲變量 – RysDe

+0

正確'print(grades_sum(Billy))'到'print(grades_sum(Billy ['Homework']))' – dawg

回答

1

你不能簡單地調用grades_sum(Billy)。比利是dictionnary,你需要一個列表

你可以這樣做:

grades_sum(Billy['Homework'])

def grades_sum(student, key): 
    total = 0 
    for grade in student[key]: 
     total += grade 
    return total 

grades_sum('Billy', 'Homework') 

我希望它能幫助,

相關問題