本周(请在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
python计算总评成绩
- 写回答
- 好问题 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))解决 无用评论 打赏 举报