当前位置:   article > 正文

python入门——现有一个字典存放着学生的学号和成绩。成绩列表里的3个数据分别是学生的语文、数学和英语成绩...

现有一个字典存放着学生的学号和成绩

名人说:古之立大事者,不惟有超世之才,亦必有坚忍不拔之志。——苏东坡
python学习记录: Code_流苏(CSDN)

一、问题描述

现有一个字典存放着学生的学号和成绩。成绩列表里的3个数据分别是学生的语文、数学和英语成绩:
dict={‘01’:[67,88,45],‘02’:[97,68,85],‘03’:[97,98,95],‘04’:[67,48,45],‘05’:[82,58,75],‘06’:[96,49,65]},完成以下操作:

① 编写函数,返回每门成绩均大于等于85的学生的学号。
② 编写函数,返回每一个学号对应的平均分(sum和len)和总分(sum),结果保留两位小数。
③ 编写函数,返回按总分升序排列的学号列表。

二、解决过程

①编写函数,返回每门成绩均大于等于85的学生的学号。

1️⃣思路简述

首先先读题,让我们编写函数,返回符合要求的"学号",我们发现一共六个学号,说明有六名学生,而且有对应的三门课的成绩,这个时候就要用到我们的字典了,此处字典键为学号,值为三门课的成绩,可以用列表表示出来。

接着,开始构思,要怎么实现呢?这个时候我们往上看,它是六名学生。所以我们就可以想到循环处理。那么怎么处理呢?就通过循环遍历字典,然后借助if条件语句进行判断,符合的k(键,本题k值代表学号)就加进列表(下面程序里创建的是a列表)中,之后将a返回给主函数,也就是返回了所有符合要求的k。

最后,返回主函数后,将其通过print输出,就是要求的答案了。

2️⃣编程实现

# 创作者:Code_流苏
# 开发时间:2022/9/27 20:30
my_dict = {'01':[67,88,45],'02':[97,68,85],'03':[97,98,95],'04':[67,48,45],'05':[82,58,75],'06':[96,49,65]}

def avg1(dict, score):
    a=[]
    for k, v in dict.items():
        if (v[0] >= score and v[1] >= score and v[2] >= score):
              a.append(k)
    return a
    
print(avg1(my_dict, 85))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

3️⃣测试
在这里插入图片描述

②编写函数,返回每一个学号对应的平均分(sum和len)和总分(sum),结果保留两位小数。

1️⃣思路简述

首先先读题,也是我们编写函数,返回每一个学号对应的平均分(sum和len)和总分(sum),同时输出的结果要保留两位小数。

接着,开始构思,该怎么去写呢?关键在哪里?我们仔细读题会发现“每个”学号对应的平均分和总分,注意是每个,所以这个时候,我们可能又要借助for循环处理了,循环遍历字典,将每个学号对应的平均分和总分进行求解,并且存入一个空字典中,但是这个时候就完成了吗?不要忘了后半句,结果保留两位小数,怎么保留呢?这个时候就要用到round函数了,通过round函数我们可以很方便地控制精度输出。完成了保留小数位的精度控制后,循环处理完毕,返回到主函数。

最后,返回主函数后,通过print进行输出即可。

2️⃣编程实现

# 创作者:Code_流苏
# 开发时间:2022/9/27 20:37
my_dict = {'01':[67,88,45],'02':[97,68,85],'03':[97,98,95],'04':[67,48,45],'05':[82,58,75],'06':[96,49,65]}

def avg2(my_dict):
    d1={}
    for k, v in my_dict.items():
        d1[k] = [round((sum(v) / len(v)),2), round((sum(v)),2)]
    return d1
    
print(avg2(my_dict))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

3️⃣测试

在这里插入图片描述

③编写函数,返回按总分升序排列的学号列表。

1️⃣思路简述

首先先读题,还是我们编写函数,返回按总分升序排序的学号列表。

接着,开始构思,这还按总分、还升序排列、还学号列表,什么情况?该怎么写呢?可以这样先写看它所说的总分,说明我们要对成绩进行求和,升序排列,说明我们要对总分进行升序排序,学号列表,说明排序后输出的应该是对应的学号形成的列表。那么我们同样地要借助for循环遍历字典,然后对每个学生的成绩进行求和,求和结果存起来,之后通过sorted函数进行排序。之后将总分排序成绩结果对应的学号,通过循环添加到列表中,然后return返回所得的学号列表到主函数。

最后,返回主函数后,通过print进行输出即可。

2️⃣编程实现

# 创作者:Code_流苏
# 开发时间:2022/9/27 20:45
my_dict = {'01':[67,88,45],'02':[97,68,85],'03':[97,98,95],'04':[67,48,45],'05':[82,58,75],'06':[96,49,65]}

def avg3(my_dict):

    l1 = []
    d2 = {}

    for k, v in my_dict.items():
        d2[round((sum(v)),2)] = k
    m=sorted(d2)

    for v in m:
        l1.append(d2[v])
    return l1

print(avg3(my_dict))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

3️⃣测试

在这里插入图片描述

2022.9.27记录:Code_流苏(CSDN)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/516519
推荐阅读
相关标签
  

闽ICP备14008679号