任务7-3:超级计算机排序(课件)-《程序设计基础(Python)》同步教学(人民邮电版)

2024-08-19
| 21页
| 98人阅读
| 11人下载
普通

内容正文:

单元7 文件和数据组织 任务7-3:超级计算机排序 【任务目标】 全球超级计算机排行榜2023年6月榜单中排名前10的超级计算机信息如表7-1所示。 编写程序,按峰值运算速度从高到低的顺序输出表7-1中的超级计算机信息。 【任务实施】 演示过程…… 7.3 数据组织的维度 本节主要内容: 基本概念 一维数据的处理 二维数据的处理 数据排序 数据查找 7.3.1 基本概念 计算机在处理数据时,总是按一定的格式来组织数据。 数据的组织格式表明数据之间的基本关系和逻辑,进而形成“数据组织的维度”。 根据组织格式的不同,可将数据分为一维数据、二维数据和高维(或多维)数据。 1.一维数据 一维数据由具有对等关系的有序或无序的数据组成,采用线性方式组织。 数学中的集合和数组就是典型的一维数据。 例如,下面的一组专业名称就属于一维数据。 计算机应用,工程造价,会计学,影视动画 2.二维数据 二维数据也称为表格数据,由具有关联关系的数据组成,采用二维表格组织数据。 数学中的矩阵、二维表格都属于二维数据。 例如,下面的成绩表是一组二维数据。 3.高维数据 维度超过二维的数据都称为高维数据。 例如,成绩表加上学期,表示学生每学期的各科成绩,则构成三维数据。再加上学校信息,表示多个学校的学生在每个学期的各科成绩,则构成四维数据。 高维数据在Web系统中十分常见,例如,XML、JSON、HTML等格式均可用于表示高维数据。 高维数据通常使用JSON字符串表示,可以多层嵌套。 高维数据示例 下面的JSON字符串是两个学期的学生课程成绩数据。 { "第一学期":[ {"姓名":"小明","语文":80,"数学":85,"物理":90}, {"姓名":"韩梅梅","语文":97,"数学":87,"物理"90:}, {"姓名":"李雷","语文":88,"数学":90,"物理":70} ], "第二学期":[ {"姓名":"小明","语文":89,"数学":78,"物理":97}, {"姓名":"韩梅梅","语文":77,"数学":88,"物理":89}, {"姓名":"李雷","语文":97,"数学":76,"物理":88} ], } 7.3.2 一维数据的处理 一维数据是简单的线性结构,在Python中可用列表表示,示例代码如下。 >>> 专业=['计算机应用','工程造价','会计学','影视动画'] >>> print(专业) ['计算机应用', '工程造价', '会计学', '影视动画'] >>> 专业[0] '计算机应用' 一维数据可用文本文件进行存储,文件可使用空格、逗号、分号等作为数据的分隔符,示例代码如下。 计算机应用 工程造价 会计学 影视动画 计算机应用,工程造价,会计学,影视动画 计算机应用;工程造价;会计学;影视动画 在将一维数据写入文件时,除了写入数据之外,还需要额外写入分隔符。 在从文件读取数据时,需使用分隔符来分解字符串 >>> file=open(r'd:\data1.txt','w') #打开文本文件 >>>专业=['计算机应用','工程造价','会计学','影视动画'] #用列表表示一维数据 >>> for n in range(len(专业)-1): #将最后一个数据之前的数据写入文件 ... file.write(专业[n]) #写入数据 ... file.write(' ') #写入分隔符 ... >>> file.write(专业[n+1]) #写入最后一个数据 4 >>> file=open(r'd:\data1.txt') #重新打开文件 >>> print(file.read()) #输出从文件读取的数据 计算机应用 工程造价 会计学 影视动画 >>> file.seek(0) 0 >>> zy=file.read() #将文件数据读出,存入字符串 >>> zy '计算机应用 工程造价 会计学 影视动画' >>> data=zy.split(' ') #将字符串解析为列表,还原数据 >>> data ['计算机应用', '工程造价', '会计学', '影视动画'] 7.3.3 二维数据的处理 二维数据可看作是嵌套的一维数据,即一维数据的每个数据项为一组一维数据。 可用列表来表示二维数据,示例代码如下。 >>> scores=[['姓名','语文','数学','物理'], ['小明',80,85,90],['韩梅梅',97,87,90],['李雷',88,90,70]] 可使用CSV文件存储二维数据,从文件读取二维数据时,应注意文件末尾的换行符的处理 >>> scores=[['姓名','语文','数学','物理'], ... ['小明',80,85,90], ... ['韩梅梅',97,87,90], ... ['李雷',88,90,70]] >>>  >>> import csv >>> file=open(r'd:\scores_data.txt','w+') #打开存储二维数据的文件 >>> writer=csv.writer(file) #创建CSV文件写对象 >>> for row in scores: ... writer.writerow(row) #将二维数据中的一行写入文件 ... >>> file.seek(0) 0 >>> print(file.read()) #输出从文件读取的数据 姓名,语文,数学,物理   小明,80,85,90   韩梅梅,97,87,90   李雷,88,90,70   >>> data=[] #创建空列表,用于存储从文件读取的二维数据 >>> file.seek(0) #将文件指针移动到文件开头 0 >>> reader=csv.reader(csvfile) >>> for row in reader: ... if len(row)>0: ... data.append(row) #将非空行中的数据加入列表 ... >>> data #查看还原的二维数据 [['姓名', '语文', '数学', '物理'], ['小明', '80', '85', '90'], ['韩梅梅', '97', '87', '90'], ['李雷', '88', '90', '70']] >>> for row in data: ... print('%8s\t%s\t%s\t%s' % (row[0],row[1],row[2],row[3]))#数据格式化输出 ... 7.3.4 数据排序 常见的排序方法:选择排序、冒泡排序和插入排序。 Python列表的sort()方法和内置的sorted()函数均可用于排序 本节从算法的角度讲解各种常见的排序方法。 1.选择排序 选择排序的基本原理: 将n个数按从小到大排序。 首先从n个数中选出最小的数,将其与第1个数据交换; 然后对剩余的n-1个数采用同样的处理方法 经过n-1轮完成排序。 2.冒泡排序 冒泡排序的基本原理: 将n个数按从小到大排序。 首先,依次比较相邻的两个数,如果后面的数更小,则交换两个数的位置,经过这样一轮处理,最大的数据到了最后; 然后对剩余的前n-1个数采用同样的处理方法 经过n-1轮完成排序。 3.插入排序 插入排序的基本原理: 对n个数按从小到大排序。 将第1个数放入新列表,然后依次将剩余的n-1个数插入新列表。 每次在新列表中插入数据时,先查找应插入的位置,然后再插入数,保证新列表中的数始终按从小到大的顺序排列。 7.3.5 数据查找 1.顺序查找 基本原理:在线性表中按顺序查找指定元素。 2.二分法查找 基本原理: 二分法查找适用于有序的线性表。 假设线性表data中第一个元素的位置为start,最后一个元素的位置为end,在其中查找x。 查找的基本步骤如下。 (1)计算mid=(start+end)/2,取整数。 (2)如果x等于data[mid],则找到x,结束查找。 (3)如果x小于data[mid],令end=mid-1。如果end<start,表示线性表不包含x,结束查找,否则返回(1)。 (4)如果x大于data[mid],令start=mid+1。如果end<start,表示线性表不包含x,结束查找,否则返回(1)。 综合实例:登录密码验证 创建一个Python程序,将用户的id和密码以字典对象的格式存入文件,然后从文件读取数据,验证输入的id和密码是否正确。 $$

资源预览图

任务7-3:超级计算机排序(课件)-《程序设计基础(Python)》同步教学(人民邮电版)
1
任务7-3:超级计算机排序(课件)-《程序设计基础(Python)》同步教学(人民邮电版)
2
任务7-3:超级计算机排序(课件)-《程序设计基础(Python)》同步教学(人民邮电版)
3
任务7-3:超级计算机排序(课件)-《程序设计基础(Python)》同步教学(人民邮电版)
4
任务7-3:超级计算机排序(课件)-《程序设计基础(Python)》同步教学(人民邮电版)
5
任务7-3:超级计算机排序(课件)-《程序设计基础(Python)》同步教学(人民邮电版)
6
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。