欢迎光临我的blog!专栏记录本萌新初学python解题情况,欢迎大家交流思考
题目如上,较综合。
【解】
# 引入 randint 函数。
from random import randint
# 定义构造函数 score,使用 randint 函数生成四门课程的成绩,返回这个学生的四门课程成绩。
def score():
# 使用字典推导式生成四门课程的成绩。
return {'高数':randint(60,100),'制图':randint(60,100),'英语':randint(60,100),'Python':randint(60,100)}
# 初始化字典 Tab,并使用 score 函数生成每个学生的四门课程成绩,存储在字典 Tab 中。
Tab={}
for i in range(10):
Tab[f"学生{i+1}"]=score()
# 遍历字典 Tab,输出每个学生的四门课程成绩。
for d in Tab.keys():
print(d,Tab[d])
# 定义构造函数 ave_4,计算每个学生的加权平均成绩,并返回。
def ave_4 (Ai):
# 定义学分字典。
学分={'高数':5,'制图':3.5,'英语':4,'Python':1.5}
# 使用字典推导式计算加权平均成绩。
return sum(学分[i] * Ai[i] for i in 学分.keys()) / sum(学分.values())
# 初始化空列表 l 和空字典 rank。
l=[];rank={}
# 遍历字典 Tab 中的每个学生名字。
for i in Tab.keys():
# 使用 ave_4 函数计算该学生的加权平均成绩,并将加权平均成绩和学生名字作为键值对存储在字典 rank 中。
t=ave_4(Tab[i])
rank[t]=i
# 如果该学生的加权平均成绩高于 80 分,将该学生名字添加到列表 l 中。
if t>=80:l.append(i)
# 输出加权平均成绩高于 80 分的学生名字。
print ("加权平均成绩大于80分的学生有:",*l)
# 将字典 rank 中的键按照从大到小的顺序排序,并将排序后的结果存储在列表 new_rank 中。
new_rank=sorted(rank.keys(),reverse=True)
# 输出提示信息。
print("排名从高到低为:",end='')
# 遍历列表 new_rank,输出每个键对应的值。
for i in new_rank:
print (rank[i],end=" ")
有点臃肿,有空了再改进