编程处理 n 个学生 m 门课程的成绩。课程名称,学生的学号、姓名、各课程成绩及 n 和 m 的值均从键盘接收。计算每个学生的平均分,并按平均分降序输出成绩表(二维表形式)。 要求: 分别用3个自定义函数实现输入、计算平均分及排序、输出三大功能。在主程序中调用这些函数完成题目要求。 提示: 1、每个学生的信息用字典保存。2、所有学生信息保存在一个列表中,列表的每一个元素是一个字典。 3、用列表对象的 sort ()方法进行排序。
时间: 2023-06-01 21:02:28 浏览: 591
以下是Python代码实现:
def input_info(n, m):
"""
输入学生信息和成绩
"""
students = []
for i in range(n):
student = {}
student['id'] = input("请输入第{}个学生的学号:".format(i+1))
student['name'] = input("请输入第{}个学生的姓名:".format(i+1))
scores = []
for j in range(m):
course = input("请输入第{}门课程的名称:".format(j+1))
score = float(input("请输入{}的成绩:".format(student['name'])))
scores.append({'course': course, 'score': score})
student['scores'] = scores
students.append(student)
return students
def calc_avg(students):
"""
计算每个学生的平均分
"""
for student in students:
total_score = 0
for score in student['scores']:
total_score += score['score']
student['avg'] = total_score / len(student['scores'])
def sort_students(students):
"""
按平均分降序排序
"""
students.sort(key=lambda x: x['avg'], reverse=True)
def output_info(students):
"""
输出成绩表
"""
print("学号\t姓名\t平均分")
for student in students:
print("{}\t{}\t{}".format(student['id'], student['name'], student['avg']))
# 主程序
n = int(input("请输入学生的数量:"))
m = int(input("请输入课程的数量:"))
students = input_info(n, m)
calc_avg(students)
sort_students(students)
output_info(students)
阅读全文