【发布时间】:2021-03-09 19:12:09
【问题描述】:
xyz学校进行了5年级标准班的年考,他们要计算所有参加年考的学生的成绩。每个学生有5个科目分数。让我们帮助他们计算学生的成绩。定义一个名为 calculategrade 的函数,它接受一个参数。第一个参数是学生成绩列表。函数定义代码存根在编辑器中给出。计算列表中给定的所有学生的成绩,存储到列表中,然后返回。计算学生成绩的步骤 迭代每个学生,计算平均分,根据一个学生的平均成绩求成绩 将每个学生的成绩存储到一个列表中,然后返回。
这是我尝试过的
def calculateGrade(students_marks):
grade = []
for x in range(len(students_marks)):
avg = (sum(students_marks[x]))//len(students_marks[x])
if(avg >= 90):
grade.append('A+')
elif avg in range(80,90):
grade.append('A')
elif avg in range(70,80):
grade.append('B')
elif avg in range(60,70):
grade.append('C')
elif avg in range(50,60):
grade.append('D')
elif (avg < 40):
grade.append('F')
return grade
if __name__ == '__main__':
fptr = open(os.environ['OUTPUT_PATH'], 'w')
students_marks_rows = int(input().strip())
students_marks_columns = int(input().strip())
students_marks = []
for _ in range(students_marks_rows):
students_marks.append(list(map(int, input().rstrip().split())))
result = calculateGrade(students_marks)
fptr.write('\n'.join(result))
fptr.write('\n')
fptr.close()
用户输入2 5 [50,68,88,85,25] [45,85,88,56,14]
预期输出 C D
我的输出 C
【问题讨论】:
-
您的问题是什么?当您检查/打印程序中各个点的值和/或条件时,是否有明显的行为不端的地方?您是否使用已知输入测试了您的功能?有用吗?
-
calculateGrade([[50,68,88,85,25], [45,85,88,56,14]])工作。 -
我没有得到想要的输出。因为输入了两个列表,即 ([[50,68,88,85,25], [45,85,88,56,14]]) 两个输入的等级都应该显示,但只能看到一个等级作为输出
-
请修正你的例子中的缩进。
-
您也可以像
for x in students_marks这样简单地迭代二维数组,而不是引入range()和len()。那么它将是avg = sum(x) // len(x)。