用python解答学生成绩

 

 代码如下:{如果对你有帮助,可以点击我这个回答右上方的【采纳】按钮,给我个采纳吗,谢谢}。

def GeneraiGrade(M_exam,E_exam,Rate=0.4):
    total = {}
    for k in E_exam:
        m = M_exam[k]
        e = E_exam[k]
        s = m * Rate + e * (1-Rate)
        if s>=90:
            f = "A"
        elif s>=80:
            f = "B"
        elif s>=70:
            f = "C"
        elif s>=60:
            f = "D"
        else:
            f = "F"
        total[k.lower()] = [m,e,f]
    return total

mid_exam = {"Tommy":78,"Jarry":89,"Sunny":93,"Honey":78,"LiIy":80} #期中考试成绩主成绩单姓名:分数
end_exam = {"Tommy":60,"Jarry":69,"Sunny":88,"Honey":61,"LiIy":88} #期末考试成绩主成绩单姓名:分数
mid_examO = {"Money":56,"Crazy":99,"Windy":75,"Cloudy":87,"LiIy":68} #期中考试成绩单补充材料
end_examO = {"Money":66,"Cloudy":94,"Crazy":77,"Windy":82,"LiIy":90} #期末考试成绩单补充材料
mid_exam.update(mid_examO)
end_exam.update(end_examO)

rate = float(input())
if 0<=rate<=1:
    Total_score = GeneraiGrade(mid_exam,end_exam,rate)
else:
    Total_score = GeneraiGrade(mid_exam,end_exam,rate)
name = input().strip().lower()
print(Total_score[name],end=" ")
Grades =  {'A', 'C', 'B', 'D', 'F'} - set({v[2] for v in Total_score.values()})
print(*Grades,sep=" ",end=" ")

def GeneralGrade(M_exam,E_exam,rate=0.4):
    scores=M_exam*rate+E_exam*(1-rate)
    if scores>=90:
        return [M_exam, E_exam,'A'] 
    elif 80<=scores<90:
        return [M_exam, E_exam,'B']
    elif 70 <= scores < 80:
        return [M_exam, E_exam,'C']
    elif 60 <= scores < 70:
        return [M_exam, E_exam,'D'] 
    else:
        return [M_exam, E_exam,'F'] 
mid_exam={'Tommy':78,'Jarry':89,'Sunny':93,'Honey':78,'Lily':80} 
end_exam = {'Tommy': 60, 'Jarry': 69, 'Sunny': 88, 'Honey': 61, 'Lily': 88}
mid_exam0 = {'Money': 56, 'Crazy': 99, 'Windy': 75, 'Cloudy': 87, 'Lily': 68}
end_exam0 = {'Money': 66, 'Cloudy': 94,'Crazy': 77, 'Windy': 82,  'Lily': 90}
mid_exam.update(mid_exam0)
end_exam.update(end_exam0)
mid_list=sorted(mid_exam.items(),key=lambda x:x[0],reverse=True)
end_list = sorted(end_exam.items(), key=lambda x: x[0],reverse=True)
rate=eval(input())
total_scores={}
Grades=set()
for m,e in zip(mid_list,end_list):
    if 0<rate<1:
        x=GeneralGrade(m[1],e[1], rate)
        total_scores.update({m[0]:x})
        Grades.add(x[2])
    else:
        x = GeneralGrade(m[1], e[1])
        total_scores.update({m[0]:x})
        Grades.add(x[2])
No_Grades=set(['A','B','C','D','F'])-Grades
name=input().title()
print(total_scores[name],*No_Grades)

您的问题已经有小伙伴解答了,请点击【采纳】按钮,采纳帮您提供解决思路的答案,给回答的人一些鼓励哦~~

ps:开通问答VIP,享受5次/月 有问必答服务,了解详情↓↓↓

【电脑端】戳>>>  https://vip.csdn.net/askvip?utm_source=1146287632
【APP 】  戳>>>  https://mall.csdn.net/item/52471?utm_source=1146287632