python期末复习组合数据类型作业

该代码示例展示了如何用Python编程处理学生课程成绩。通过用户输入获取学生人数和学科数,然后创建字典存储每个学生的信息,包括学号、姓名和各科成绩。所有学生信息保存在列表中,之后计算每个学生的平均分并添加到字典,最后按平均分降序对列表进行排序。数据处理过程中,利用了字典和列表的特性以及内置的sort()方法。
摘要由CSDN通过智能技术生成

  编程处理 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)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值