5.3.2 排序算法的应用-学习任务单

资源下载
  1. 二一教育资源

5.3.2 排序算法的应用-学习任务单

资源简介

学习任务单
课程基本信息
课题 5.3 数 据 排 序—— 排序算法的应用
学习目标
学习目标: 1、能对给定的文件中的数据进行抽象并建立模型。 2、能合理选用数据结构,设计排序算法。 3、能用Python语言编写具体的排序程序。 4、能自觉对学习生活具体问题抽象建模、设计算法并编写程序及调试程序,如:对成绩进行同分同名次排名、按排车辆考场等。
课前学习任务
观察金牌排行榜。
课上学习任务
【学习任务一】
项目学习:2022北京冬奥会金牌编制金牌排行榜编制
【学习任务二】
挑战实践:给2022北京冬奥会金牌编制金牌排行榜添加上金牌名次,而且同分数同名次,如何继续编程实现? 【学习任务三】
学习生活中的应用实践: 在刚刚结束的联盟考成绩统计中,请你帮忙编写程序,能统计各科总分,并按照总分从高到低排序,并添加上总分名次,而且同分数同名次,成绩文件为“联盟.csv”,大概有5000左右考生,最后输出到“联盟2.csv”文件中。 参考答案: 【学习任务一】
项目学习:2022北京冬奥会金牌编制金牌排行榜编制 import csv #导入csv模块 csvFile = open(“jp.csv”, “r”) #打开jp.csv数据文件 reader = csv.reader(csvFile)#建立一个读入数据的对象reader a = [] #定义空列表a for item in reader: #每一行为a列表一个元素,此元素为字符串 a. append(item) #csv通过这种样式读入的数据为字符串csvFile.close() #关闭jp.csv数据文件 #冒泡排序 for i in range(1,len(a)-1): #排序不包含第一行数据(索引为0) for j in range(1,len(a)-i):#从前往后冒泡排序 if int(a[j][2])float(s[j-1][13]):#当前记录的总分比后一条记录少 s[j],s[j-1]=s[j-1],s[j] #当前记录与后一条记录交换位置 ed=j;flag=True if ed==n-1 or flag==False:break #未交换或上次交换为最后1个元素,退出while循环 i+=1 c=1#同分同名开始,c用于统计同分数的个数 s[1][14]=‘1’第一个学生第一名,注意数据类型 for i in range(2,n): if s[i][13]!=s[i-1][13]: #当前学生总分与前一个不等 s[i][14]=str(int(s[i-1][14])+c) #当前学生名次是前一个学生名次+前一学生同分数的个数 c=1#当前学生分数个数c恢复初值1个 else: #当前学生总分与前一个相等 s[i][14]=s[i-1][14]#当前学生与前一个同名次 c=c+1 #统计同分个数 #数据写入到联盟2.csv中 file2 = open('联盟2.csv','w', newline='') #数据写入 writer = csv.writer(file2, dialect='excel') for i in range(len(s)): writer.writerow(s[i]) file2.close()

展开更多......

收起↑

资源预览