编程处理 n 个学生 m 门课程的成绩。课程名称,学生的学号、姓名、各课程成绩及n和m的值均从键盘接收。计算每个学生的平均分,并按平均分降序输出成绩表(二维表形式)。
要求:
分别用3个自定义函数实现输入、计算平均分及排序、输出三大功能。在主程序中调用这些函数完成题目要求。、
提示: 1、每个学生的信息用字典保存。
2、所有学生信息保存在一个列表中,列表的每一个元素是一个字典。
3、用列表对象的sort()方法进行排序。
def datainput(allstu):
n = int(input("请输入学生人数:"))
m = int(input("请输入学科数:"))
biaotou = ["学号", "姓名"]
for k in range(m):
classn = input("请输入第" + str(k + 1) + "门课程名称:")
biaotou.append(classn)
for j in range(n):
onestu = {}
onestu["学号"] = input("请输入学号:")
onestu["姓名"] = input("请输入姓名:")
for i in range(m):
onestu[biaotou[i + 2]] = int(input("请输入" + onestu["姓名"] + "的" + biaotou[i + 2] + "成绩:"))
allstu.append(onestu)
return allstu
def datapro(alstu):
for p in alstu:
s = 0
count = 0
for key, value in p.items():
if key not in ["学号", "姓名"]:
s = s + value
count = count + 1
aver = round(s / count, 1)
p["平均数"] = aver
alstu.sort(key=lambda x: x["平均数"], reverse=True)
return
def dataprint(alstud):
for key, value in alstud[0].items():
print("{:<8}".format(key), end='')
print('')
for k in alstud:
for key, value in k.items():
print("{:<8}".format(value), end='')
print('')
return
all=[]
datainput(all)
datapro(all)
dataprint(all)