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