题目描述
某科目考试,每天开考一次,每位参考者可进行多次考试,取最好成绩的一次作为最终成绩,计算每位参考者的最终成绩,并保存在最终成绩.txt中
输出格式:文件中存储数据格式为排名,姓名,性别,成绩
排序优先级为
1.高:按照最终成绩从高到低排序;
2.中:相同成绩时,按照获得日期从早到晚排序;
3.低:相同日期时,按照原文件中的顺序
排名从1开始,相同成绩排名相同
案例代码
下面是一个实现上述功能的 Python 程序,它会读取原始成绩数据文件,对每位参考者的最终成绩进行计算,并保存到最终成绩.txt 中,并按照要求进行排序输出:
import datetime
# 读取原始成绩数据
def read_scores(filename):
scores = []
with open(filename, 'r') as file:
for line in file:
parts = line.strip().split(',')
rank = int(parts[0])
name = parts[1]
gender = parts[2]
score = int(parts[3])
date = datetime.datetime.strptime(parts[4], '%Y-%m-%d').date()
scores.append((rank, name, gender, score, date))
return scores
# 计算每位参考者的最终成绩
def calculate_final_scores(scores):
final_scores = {}
for rank, name, gender, score, date in scores:
if name in final_scores:
if score > final_scores[name][0]:
final_scores[name] = (score, date, gender)
else:
final_scores[name] = (score, date, gender)
return final_scores
# 将最终成绩保存到文件中
def save_final_scores(final_scores, output_file):
with open(output_file, 'w') as file:
sorted_scores = sorted(final_scores.items(), key=lambda x: (-x[1][0], x[1][1]))
rank = 1
for name, (score, date, gender) in sorted_scores:
file.write(f"{rank},{name},{gender},{score}\n")
rank += 1
# 主程序
if __name__ == "__main__":
raw_scores = read_scores('原始成绩数据.txt')
final_scores = calculate_final_scores(raw_scores)
save_final_scores(final_scores, '最终成绩.txt')
print("最终成绩已保存到最终成绩.txt")
这个程序首先会读取原始成绩数据文件,然后计算每位参考者的最终成绩,并将最终成绩保存到最终成绩.txt 文件中。在保存最终成绩时,程序会按照要求进行排名、排序并输出。
你需要将原始成绩数据存储在一个名为’原始成绩数据.txt’的文件中,并按照以下格式存储数据:排名,姓名,性别,成绩,获得日期。然后运行上述程序即可生成最终成绩.txt 文件。
© 版权声明
本站资源来自互联网收集,仅供用于学习和交流,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!
THE END