2017-05-23 62 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') 

我希望它能帮助,

相关问题