赞
踩
名人说:古之立大事者,不惟有超世之才,亦必有坚忍不拔之志。——苏东坡
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))
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))
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))
3️⃣测试
2022.9.27记录:Code_流苏(CSDN)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。