计算给定作业的平均值,并返回平均值.PYTHON



我一直在写这段代码,但它似乎可以工作。

This function takes two parameters, the entire list of students and an integer
indicating which assignment (0, 1, 2 or 3) you wish to find the average for.
You will need to add the two parameters to the function
declaration.
The function will calculate the average for the given assignment and will return the
average.

这是我的代码:


def AverageAssignment(students, assignement_number):
if assignement_number != range(0,3):
return -999
assignement_number= students[0][1]

deno=0
average=0
n=len(students[0][1])
for i in students:
deno+=1
average = sum(i[1][assignement_number])



students = [('Jane',[70,80,90,100]),('xinrong',[60,50,30,40]),('sima',[100,70,30,100])]
#AverageAssignment(students,0)

谢谢

我期待着任务编号的平均值(只是公式(

我能看到的错误:

您的assignment_number永远不会等于一个范围。您可能想要做的是assignment_number in range(0,3)

看不出你为什么要assignement_number= students[0][1]这总是会用Jane的分数覆盖它

这段代码能解决您的问题吗?

def AverageAssignment(students,assignment_no):
try:
scores = [student[1][assignment_no] for student in students]
return (sum(scores)/len(scores))
except IndexError:
return -999

students = [('Jane',[70,80,90,100]),('xinrong',[60,50,30,40]),('sima',[100,70,30,100])]
assignment = 0
print(AverageAssignment(students,assignment))
assignment = 1
print(AverageAssignment(students,assignment))
assignment = 2
print(AverageAssignment(students,assignment))
assignment = 3
print(AverageAssignment(students,assignment))
assignment = 4
print(AverageAssignment(students,assignment))

与其检查作业编号是否在0到3之间(如果有5个作业、10个作业或100个作业怎么办?(,我们只是在尝试访问不存在的分数时发现错误。

我创建了一个列表scores,其中将包含每个学生在指定作业中的分数。一旦我得到了,我除以分数的总和,但除以分数列表的长度,得出平均值。

按照您的示例,如果使用了无效的分配编号,函数将返回-999。

您可以将内置的sum((函数与生成器结合使用,如下所示:

students = [('Jane',[70,80,90,100]),('xinrong',[60,50,30,40]),('sima',[100,70,30,100])]
def get_average(slist, assignment):
return sum(score[assignment] for _, score in slist) / len(slist)
print(get_average(students, 1))

输出:

66.66666666666667

注意:

此代码中没有针对坏索引(分配(的防御措施

最新更新