按成绩分班

Posted synown

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了按成绩分班相关的知识,希望对你有一定的参考价值。

题目描述

根据输入的各科成绩分班。
文科成绩包含语文,数学,英语,政治,历史,地理六门课;
理科成绩包含语文,数学,英语,物理,化学,生物六门课;

当平均成绩大于90分时分到A班,80到90分B班,80以下分C班。
但理科生如果数学成绩在80分以下,就不能分到A班;物理成绩在70分以下,就不能分到B以上班级;
但文科生如果语文成绩在80分以下,就不能分到A班;政治成绩在70分以下,就不能分到B以上班级;

最终要打印出平均成绩和分班的结果。
输入的是六门课成绩,比如:
90,93,90,物理=89,化学=88,生物=91
前三个值只固定对应语文、数学、英语三门课,所有不需要写课程名。
后三门课要写上课程名,理科是物理、生物、化学;文科是政治、历史、地理,顺序可以不固定。

输入

90,93,90,物理=89,化学=88,生物=91

输出

平均分是:90.17,分配班级是:理科A班
 
string = input()
#将输入字符串转换为字典作为函数关键字参数传入
l = string.split(‘,‘)
d = {}
d[‘语文‘] = int(l[0])
d[‘数学‘] = int(l[1])
d[‘英语‘] = int(l[2])
for i in l[3:]:
    d[i.split(‘=‘)[0]]=int(i.split(‘=‘)[1])

#定义函数实现分班
def main(**kwargs):
    sum = 0
    count = 0
    for k,v in kwargs.items():
        sum += v
        count += 1
    avg = sum / count
    if "物理" in kwargs:
        if avg > 90 and kwargs.get("数学") >= 80:
            print("平均分是:{:.2f},分配班级是:{}".format(avg,"理科A班"))
        elif avg <= 90 and avg >= 80 or (avg > 90 and kwargs.get("数学") < 80) or (avg > 90 and kwargs.get("物理") >= 70):
            print("平均分是:{:.2f},分配班级是:{}".format(avg,"理科B班"))
        else:
            print("平均分是:{:.2f},分配班级是:{}".format(avg,"理科C班"))
    else:
        if avg > 90 and kwargs.get("语文") >= 80:
            print("平均分是:{:.2f},分配班级是:{}".format(avg,"文科A班"))
        elif avg <= 90 and avg >= 80 or (avg > 90 and kwargs.get("语文") < 80) or (avg > 90 and kwargs.get("政治") >= 70):
            print("平均分是:{:.2f},分配班级是:{}".format(avg,"文科B班"))
        else:
            print("平均分是:{:.2f},分配班级是:{}".format(avg,"文科C班"))

#调用函数运行
if __name__ == ‘__main__‘:
    main(**d)

  

以上是关于按成绩分班的主要内容,如果未能解决你的问题,请参考以下文章

row_number() over (partition by order by)的用法

sql partition by

华为OD机试 - 分班(Java) | 机试题+算法思路+考点+代码解析 2023

华为OD机试 - 分班(Java) | 机试题+算法思路+考点+代码解析 2023

Y2165终极分班考试题。

刘玉莲3