夏丽卡尔儿儿儿儿儿 2023-04-18 13:19 采纳率: 0%
浏览 91

python计算总评成绩

本周(请在4月15日周六晚8点前上交)
stuscore.txt文件中存放着某班学生的计算机课成绩,包含学号、平时
成绩、qm成绩三列。请根据平时成绩占40%,qm成绩占60%的比例计算
总评成绩,请按学号计算每位学生的总评成绩、等级(90分以上优秀,70-
90为良好,其余为通过)。最终再统计学生总人数,按总评成绩计算90分
以上、70~89分,70分以下各成绩区间的人数和班级总平均分(取两位小
数)。
学号平时成绩qm成绩
101534501018086.5
101534501029580.0
1015345010310093.6
101534501046076.4
101534501057588.4
101534501068583.0
101534501078265.2
101534501087877,0

  • 写回答

1条回答 默认 最新

  • 创意程序员 2023-04-18 13:46
    关注

    已测过,stuscore.txt与本程序同目录,供参考:

    # 定义学生成绩等级函数
    def get_grade(score):
        if score >= 90:
            return "优秀"
        elif score >= 70:
            return "良好"
        else:
            return "通过"
    
    # 初始化变量
    total_score = 0
    total_num = 0
    excellent_num = 0
    good_num = 0
    pass_num = 0
    
    # 处理数据
    lines = []
    with open('stuscore.txt', 'r') as f:
        f.readline()  # 跳过第一行
        for line in f.readlines():
            lines.append(line)
            # 分割每行数据,获取学号、平时成绩和期末成绩
            items = line.strip().split()
            sid = items[0]
            daily_score = float(items[1])
            final_score = float(items[2])
    
            # 计算总评成绩
            total_score = daily_score * 0.4 + final_score * 0.6
    
            # 计算学生总人数和各成绩区间的人数
            total_num += 1
            if total_score >= 90:
                excellent_num += 1
            elif total_score >= 70:
                good_num += 1
            else:
                pass_num += 1
    
            # 输出学生总评成绩和等级
            print("学号:{},总评成绩:{:.2f},等级:{}".format(sid, total_score, get_grade(total_score)))
    
    # 计算班级总平均分
    class_avg_score = sum(
        [float(line.strip().split()[1]) * 0.4 + float(line.strip().split()[2]) * 0.6 for line in lines]) / total_num
    
    # 输出各成绩区间的人数和班级总平均分
    print("90分以上:{}人".format(excellent_num))
    print("70-89分:{}人".format(good_num))
    print("70分以下:{}人".format(pass_num))
    print("班级总平均分:{:.2f}".format(class_avg_score))
    
    评论

报告相同问题?

问题事件

  • 创建了问题 4月18日