新教科版-高一信息技术-32-数据与结构(二课时)课件_第1页
新教科版-高一信息技术-32-数据与结构(二课时)课件_第2页
新教科版-高一信息技术-32-数据与结构(二课时)课件_第3页
新教科版-高一信息技术-32-数据与结构(二课时)课件_第4页
新教科版-高一信息技术-32-数据与结构(二课时)课件_第5页
已阅读5页,还剩81页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

3.2数据与结构3.2数据与结构1学习目标3.能比较不同数据结构的特点,会选用合适的数据结构组织数据解决简单问题。2.了解树、图结构的基本概念及特点。1.熟悉队列结构的概念和特点,能够使用python语言对队列进行操作。学习目标3.能比较不同数据结构的特点,会选用合适的数据2各种类型的数据被编码表示成二进制数据,存储到计算机中。在利用计算机解决问题的过程中,这些数据将是最基本的元素。但是,零散孤立的数据是很难被有效利用的。根据所要解决的问题的不同,我们还需要依据数据关系建立合适的结构。采用这些结构将数据组织起来,才能有利于操作和管理,进而更高效地解决实际问题。

本节我们将学习表、队列、树、图等数据结构,了解结构中数据间的关系,在一定的结构上完成算法设计;学会在生活中根据实际问题,建立合适的数据结构,进而运用所学的知识解决问题。各种类型的数据被编码表示成二进制数据,存储到计3

阅读教材第56页至57页任务一的活动1“了解订单数据”,填写表3.2.1.(P31)网站名称订单中的数据Python中对应的数据类型A网站商品名称字符串单价浮点型数量整型B网站商品名称字符型数量整型价格浮点型数据类型阅读教材第56页至57页任务一的4数据类型简单数据类型复合数据类型简单数据类型不能分解成更小的数据类型。如:整型(int)、浮点型(float)、字符串(str)、布尔型(bool)。复合数据类型则由简单数据类型组成。如:元组(tuple)、集合(set)、列表(list)、字典(dict)。数据类型数据类型简单数据类型复合数据类型简单数据类型不能分解成更小的5一、数据类型认识Python简单数据类型

在Python语言中,简单数据类型有整数(int)、浮点数(float)、字符串(str)、布尔(bool)、复数(complex)等数据类型。①整数(int)用来表示整数数值,就是没有小数部分的数值。在Python中,整数包括正整数、负整数和0,并且它的位数是任意的,主要用来进行数学运算

。②浮点数(float)浮点数由整数部分和小数部分组成,主要用于处理包括小数的数。一、数据类型认识Python简单数据类型在Python语言6③字符串(str)在Python中,加了引号的字符都被认为是字符串,其声明有三种方式,分别是:单引号、双引号和三引号,这三种引号形式在语义上没有差别,只是在形式上有些差别,其中单引号和双引号中的字符序列必须在一行上,而三引号内的字符序列可以分布在连续的行上。④布尔(bool)和其他编程语言一样,Python布尔类型也是用于逻辑运算,有两个值:True(真)和False(假)。在Python中的布尔值可以转化为数值,其中True表示1,False表示0。③字符串(str)在Python中,加了引号的字符都被认为是7>>>type(8)#type()函数返回数据的类型<class‘int’>#返回’int’类型>>>type(3.14)<class‘float’>#返回’float’类型>>>type(‘Thankyou!’)<class‘str’>#返回’str’类型>>>type(True)<class‘bool’>#返回’bool’类型数据类型——简单数据类型>>>type(8)#ty8Python语言中,复合数据类型有元组(tuple)、集合(set)、列表(dict)等。元组BookInfo0=(“Id0010230,15.68,36”)BookInfo1=(“Id2315937,20,2”)

>>>bookinfo0=('id0010230',15.58,36)>>>type(bookinfo0)<class'tuple'>>>>>>>bookinfo1=('id2315937',20,2)>>>bookinfo1[1]20数据类型——复合数据类型Python语言中,复合数据类型有元组(tuple)、集合(9集合Bookset={bookinfo0,bookinfo1}>>>bookinfo0=('id0010230',15.68,36)>>>bookinfo1=('id2315937',20,2)>>>bookset={bookinfo0,bookinfo1}>>>type(bookset)<class'set'>>>>列表Booklist=[bookinfo0,bookinfo1]>>>bookinfo0=('id0010230',15.68,36)>>>bookinfo1=('id2315937,20,2')>>>booklist=[bookinfo0,bookinfo1]>>>type(booklist)<class'list'>>>>——复合数据类型数据类型集合>>>bookinfo0=('id0010230',110一、数据类型Python复合数据类型某用户预订的商品编号为ID0010230、单价为15.68元,数量为36,可将这3个不同类型的简单数据组织成“元组”复合数据类型:>>>BookInfo0=('ID0010230',15.68,36)>>>type(BookInfo0)<class'tuple'>#返回元组类型另一用户预订的商品编号为ID2315937、单价为20元,数量为2,可记作:>>>BookInfo1=('ID2315937',20,2)>>>BookInfo1[1]20#返回元组BookInfo1中索引为1的项的值在Python语言中,复合数据类型有元组(tuple)、集合(set)、列表(list)、字典(dict)等①元组

一、数据类型Python复合数据类型某用户预订的商品编号为I11一、数据类型订单汇总,可以定义为一个集合(集合里的项称为元素,彼此之间没有顺序):>>>BookSet={BookInfo0,BookInfo1}>>>type(BookSet)<class'set'>#返回集合类型>>>BookSet{('ID2315937',20,2),('ID0010230',15.68,36)}#返回集合的值>>>BookInfo0inBookSet#测试元素BookInfo0是否属于集合BookSetTrue#返回逻辑真②集合一、数据类型订单汇总,可以定义为一个集合(集合里的项称为元素12订单汇总,也可以按订单产生的先后顺序组成一个列表(列表里的项是有顺序编号的):>>>BookList=[BookInfo0,BookInfo1]>>>type(BookList)<class'list'>#返回列表类型>>>BookList[0]('ID0010230',15.68,36)>>>BookList[1]('ID2315937',20,2)>>>BookList[0][1]*BookList[0][2]+BookList[1][1]*BookList[1][2]604.48#返回计算结果③列表订单汇总,也可以按订单产生的先后顺序组成一个列表(列表里的项13是Python中标准数据类型之一,它也是容器类型,可以存储不同的数据,并且具有可变性。字典顾名思义,就是拥有类似字典的特性,通过“键”能够快速查找对应的“值”。这种基本的数据结构称为“键值对”。广义上来说,其他标准数据类型中也存在“键值对”,只是它们的键只能是索引号,而字典的键可以是不可变的数据类型(数字、字符串和元组)。实例1tel=dict([('sape',4139),('guido',4127),('jack',4098)])print(tel)#输出结果为:{'sape':4139,'guido':4127,'jack':4098}#会发现直接转化成字典。key:value实例2tec={x:x**2forxin(2,4,6)}print(tec)#输出结果{2:4,4:16,6:36}④字典(dictionary)是Python中标准数据类型之一,它也是容器类型,可以存储不14实例3knights={'Apollo':'theBrave','Prothemeus':'theugly'}fork,vinknights.items():print(k,'---->',v)#输出结果Apollo---->theBraveProthemeus---->theugly实例4fori,vinenumerate(['tick','Dida','Mouo']):print(i,v)#enumerate()函数返回的是列表中的索引与键值#输出结果0tick1Dida2Mouo实例5questions=['name','quest','favoriatecolor']answers=['lacelot','theholygrail','blue']forq,vinzip(questions,answers):print('Whatisyour{0}?Itis{1}.'.format(q,v))#通过zip函数把两个不相关的序列,弄成一组#输出结果为:Whatisyourname?Itislacelot.Whatisyourquest?Itistheholygrail.Whatisyourfavoriatecolor?Itisblue.实例315数据类型转换:函数格式使用示例描述int(x[,base])int("8")

可以转换的包括String类型和其他数字类型,但是会丢失精度

float(x)

float(1)/float("1")

可以转换String和其他数字类型,不足的位数用0补齐,例如1会变成1.0

complex(real,imag)

complex("1")/complex(1,2)

第一个参数可以是String或者数字,第二个参数只能为数字类型,第二个参数没有时默认为0

str(x)

str(1)

将数字转化为String

repr(x)

repr(Object)

返回一个对象的String格式

eval(str)

eval("12+23")

执行一个字符串表达式,返回计算的结果,如例子中返回35

list(s)

list((1,2,3,4))

将序列转变成一个列表,参数可为元组、字典、列表,为字典时,返回字典的key组成的集合

chr(x)

chr(0x30)

chr()用一个范围在range(256)内的(就是0~255)整数作参数,返回一个对应的字符。返回值是当前整数对应的ascii字符。

ord(x)

ord('a')

返回对应的ASCII数值,或者Unicode数值

hex(x)

hex(12)

把一个整数转换为十六进制字符串

oct(x)

oct(12)

把一个整数转换为八进制字符串数据类型转换:函数格式使用示例描述int(x[,base]16编制订单数据处理程序网店接受了大量的订单,如何安排发货呢?实际上,网店在处理订单时,一般采取“先下单,先发货”的原则。因此,所有的订单将按照下单的时间顺序放进一个列表中,先放进去的先发货,所有订单排列在一起,像是一群人在排队。

下面的Python程序可以实现以下功能:提供“添加订单”“发货”“查看订单列表”“退出”四个操作选项。当我们选择“1”后输入订单数据,程序将订单数据添加到订单数据表中;选择“2”后,程序将当前订单列表中最早进入的数据删除(表示已安排发货处理);选择“3”可以显示当前订单列表中所有的订单数据;选择“4”将结束运行。请你完善下列Python程序,模拟添加订单和发货的过程,了解订单列表的操作过程。编制订单数据处理程序网店接受了大量的订单,如何17编制订单数据处理程序listque=[] #定义列表listque存储订单x=0while(x!=4): #当x=!4时,执行循环

print('1.添加订单')print('2.发货')print('3.查看订单列表')print('4.退出')x=int(input("输入你的选择:")) #输入选择项

ifx==1:y=input("输入订单编号:") #输入订单编号

listque.append(y) #在列表listque中添加订单号

elifx==2:iflen(listque)==0: #如果订单列表为空

print("订单列表为空")else:print("发货单号:"+listque.pop(0))

elifx==3:print("等待发货:",listque) #查询列表listque中的订单号

print()input("运行完毕,请按回车键退出...")订单处理程序数据类型编制订单数据处理程序listque=[]18数据结构:存在特定关系的数据元素的集合。常用的数据结构有:数组,栈,链表,队列,树,图,堆,散列表等数据结构也称逻辑结构:集合结构、线性结构、树结构、图结构(网状结构)数据结构数据结构:存在特定关系的数据元素的集合。数据结构也称逻辑结19数据结构

——线性数据结构线性数据结构又称线性表。特点:除首元素没有前驱元素、尾元素没有后继元素外,其它元素都只有一个前驱元素和一个后继元素。数据元素之间是一对一的关系。数据结构——线性数据结构线性数据结构又称线性表。20常见的线性数据结构(1)栈常见的线性结构有:栈、队列和串等都属于线性结构。栈是一种特殊的线性表,仅能在线性表的一端操作,栈顶允许操作,栈底不允许操作。栈的特点是:先进后出,或者说是后进先出,从栈顶放入元素的操作叫入栈,取出元素叫出栈。常见的线性数据结构(1)栈常见的线性结构有:栈、队列和串等21队列与栈一样,也是一种线性表,不同的是,队列可以在一端添加元素,在另一端取出元素,也就是:先进先出。从一端放入元素的操作称为入队,取出元素为出队,示例图如下:

(2)队列典型的例子如超市里排队付款的队伍。队列与栈一样,也是一种线性表,不同的是,队列可以在一端添加元22队列是一种有限制的线性结构。特点:数据元素只能在一端依次添加(进队),在另一端依次删除(出队)。队列在Python中,用列表实现队列的创建;队列的基本操作:入队,出队,求队长,判队空。

——队列数据结构队列是一种有限制的线性结构。队列在Python中,用列表实现23队列的计算机实现:在Python中,队列一般用列表(list)实现,常用操作:q=[]#定义空列表qq.append(x)#元素x入队(添加)q.pop(0)#返回队首元素,队首元素出队(删除)

len(q)#返回队列q的长度(元素个数)q[i]#返回列表q中索引(index)为i的元素.索引有2套编号方式:

正编号(从左到右编号依次为0,1,2,…)和负编号(从右到左编

号依次为-1,-2,-3,…)数据结构

——队列队列的计算机实现:在Python中,队列一般用列表(list24阅读教材

“探究快递配送过程”的活动1,了解快递派送线路,完成P60的连点成树。派送点学校收发室某单位传达室收件人A同学收件人B同学职工小王职工小李ABCDEFG数据结构

——树结构阅读教材“探究快递配送过程”的活动1,了解快递派送线路,25树的递归定义如下:树是由n(n>=0)个节点组成的有限集合。若n=0,则称为空树。任何一个非空树均满足以下二个条件:(1)仅有一个根节点。(2)当n>0时,其余节点可分为m(m>=0)个互不相交的有限集合,其中每个集合又是一棵树,并称为根的子树。特点:数据元素之间是一对多的关系。数据结构树结构是一种具有层次关系的非线性结构。

——树结构树的递归定义如下:树是由n(n>=0)个节点组成的有限集合。26树结构树是一种具有层次关系的非线性数据结构树结构树是一种具有层次关系的非线性数据结构27快递到达目的地城市后,物流图的结构呈树状快递到达目的地城市后,物流图的结构呈树状28了解物流网络了解物流网络29岳阳市长沙市南通市南京泰州市扬州市了解物流网络数据结构

——图结构岳阳市长沙市南通市南京泰州市扬州市了解物流网络数30图结构结构是由--组节点(称为顶点)和--组节点间的连线(称为边或弧)构成的一种数据结构。图结构中的每个顶点都可以与其他顶点有边相连,图结构中数据元素之间是多对多的关系。图3.2.6表示的是商品从供货点到收货点的派送过程的图结构。图3.2.7也是--个图结构,其中,标为(4“1”的顶点与两条边相连,顶点“4”与“2”“8”“9”相连。在物流网络中,分拨中心、配送中心、货物需求点等可以抽象为图的顶点,城市道路、各级铁路等可以抽象为图的边,如城市以及城市之间的运输道路就是图结构。利用图结构,我们还可以解决物流中的许多问题,如道路网络分析、车辆运营安排等。图结构结构是由--组节点(称为顶点)和--组31图结构是由一组节点(称为顶点)和一组节点间的连线(称为边或弧),构成的一种数据结构。特点:图结构中的每个顶点都可以与其他顶点有边相连,数据元素之间是多对多的关系。数据结构

——图结构①②③④⑤⑥

所有的顶点构成一个顶点集合,所有的边构成边的集合,一个完整的图结构就是由顶点集合和边集合组成。图结构在数学上记为以下形式:

G=(V,E)或者G=(V(G),E(G))其中V(G)表示图结构所有顶点的集合,顶点可以用不同的数字或者字母来表示。E(G)是图结构中所有边的集合,每条边由所连接的两个顶点来表示。图结构中顶点集合V(G)不能为空,必须包含一个顶点,而图结构边集合可以为空,表示没有边。图结构是由一组节点(称为顶点)和一组节点间的连线(称为边或弧32无向图如果一个图结构中,所有的边都没有方向性,那么这种图便称为无向图。典型的无向图,如图二所示。由于无向图中的边没有方向性,这样我们在表示边的时候对两个顶点的顺序没有要求。例如顶点VI和顶点V5之间的边,可以表示为(V2,V6),也可以表示为(V6,V2)。对于图二无向图,对应的顶点集合和边集合如下:

V(G)={V1,V2,V3,V4,V5,V6}

E(G)={(V1,V2),(V1,V3),(V2,V6),(V2,V5),(V2,V4),(V4,V3),(V3,V5),(V5,V6)}无向图如果一个图结构中,所有的边都没有方向性,那么这种图便称33有向图一个图结构中,边是有方向性的,那么这种图就称为有向图,如图三所示。由于图的边有方向性,我们在表示边的时候对两个顶点的顺序就有要求。我们采用尖括号表示有向边,例如<V2,V6>表示从顶点V2到顶点V6,而<V6,V2>表示顶点V6到顶点V2。对于有向图,对应的顶点集合和边集合如下:

V(G)={V1,V2,V3,V4,V5,V6}

E(G)={<V2,V1>,<V3,V1>,<V4,V3>,<V4,V2>,<V3,V5>,<V5,V3>,<V2,V5>,<V6,V5>,<V2,V6>,<V6,V2>}有向图一个图结构中,边是有方向性的,那么这种图就称为有向图,34

★快递门店B

★快递门店A家★

★快递门店C地点——地点时间/分家--快递门店A2家--快递门店B5家--快递门店C10A-B4A-C6B-C4该同学家及快递店间步行所需时间表规划取快递最快路线数据结构★★家★★地点——地点时间/分家-35数据结构加权图快递门店A●快递门店C●●家2610454规划取快递最快路线快递门店B●【朴素算法】穷举遍历,依次列出所有可能走法。将图中每个节点进行编号,编号互不相同:如作为根节点的“家”编号为“X”,其3个子节点(快递门店A,快递门店B,快递门店C)分别编号为“A”“B”“C”,…,详见下图。数据结构加权图快递门店A快递门店C●2610454规划取快递36求解最短用时分析树数据结构【朴素算法】穷举遍历,依次列出所有可能走法如上图将图中每个节点进行编号,编号互不相同:如作为根节点的“家”编号为“X”,其3个子节点(快递门店A,快递门店B,快递门店C)分别编号为“A”“B”“C”,…,详见下图。求解最短用时分析树数据结构【朴素算法】穷举遍历,依次列出所有37【算法演示1】求解最短时间(基于图3.2.10的分析树)【算法演示1】求解最短时间(基于图3.2.10的分析树)38【算法演示2】求解最短时间(直接对图3.2.9进行深度优先遍历)【算法演示2】求解最短时间(直接对图3.2.9进行深度优先遍39练习人、狼、羊、菜过河问题:有一个人带着一只狼、一只羊和一捆白菜,来到一条河边,河边只有一条小船,人每次过河最多只能带一样,如果人不在现场,狼就要吃羊,羊就要吃菜。他应该怎样安排过河呢?请完成下面的“树”结构分析图,帮他找到可行的过河方案。提示:可约定对象在左岸用0表示,在右岸用1表示。练习人、狼、羊、菜过河问题:有一个人带着一只狼、一只羊和一捆40程序与调试程序与调试41结构类型数据(节点)之间的关系生活中相应结构应用举例队列(线性)一对一排队(上车、过马路、付款)、医院就诊电子牌上的就诊队列树一对多书的目录结构图多对多全国航运图,铁路运输图数据结构的比较结构类型数据(节点)之间生活中相应结构应用举例队列一对一排队42队列是一种线性数据结构,本质特征是FIFO。队列在Python中,用列表实现队列的创建;队列的基本操作:入队,出队,求队长,判队空。树结构和图结构是两种比较难的数据结构,我们应领会其本质特征,会用树结构和图结构对工作、学习、生活中的具体问题进行抽象和分析,解决一些简单问题。课堂小结队列是一种线性数据结构,本质特征是FIFO。队列在Pytho433.2数据与结构3.2数据与结构44学习目标3.能比较不同数据结构的特点,会选用合适的数据结构组织数据解决简单问题。2.了解树、图结构的基本概念及特点。1.熟悉队列结构的概念和特点,能够使用python语言对队列进行操作。学习目标3.能比较不同数据结构的特点,会选用合适的数据45各种类型的数据被编码表示成二进制数据,存储到计算机中。在利用计算机解决问题的过程中,这些数据将是最基本的元素。但是,零散孤立的数据是很难被有效利用的。根据所要解决的问题的不同,我们还需要依据数据关系建立合适的结构。采用这些结构将数据组织起来,才能有利于操作和管理,进而更高效地解决实际问题。

本节我们将学习表、队列、树、图等数据结构,了解结构中数据间的关系,在一定的结构上完成算法设计;学会在生活中根据实际问题,建立合适的数据结构,进而运用所学的知识解决问题。各种类型的数据被编码表示成二进制数据,存储到计46

阅读教材第56页至57页任务一的活动1“了解订单数据”,填写表3.2.1.(P31)网站名称订单中的数据Python中对应的数据类型A网站商品名称字符串单价浮点型数量整型B网站商品名称字符型数量整型价格浮点型数据类型阅读教材第56页至57页任务一的47数据类型简单数据类型复合数据类型简单数据类型不能分解成更小的数据类型。如:整型(int)、浮点型(float)、字符串(str)、布尔型(bool)。复合数据类型则由简单数据类型组成。如:元组(tuple)、集合(set)、列表(list)、字典(dict)。数据类型数据类型简单数据类型复合数据类型简单数据类型不能分解成更小的48一、数据类型认识Python简单数据类型

在Python语言中,简单数据类型有整数(int)、浮点数(float)、字符串(str)、布尔(bool)、复数(complex)等数据类型。①整数(int)用来表示整数数值,就是没有小数部分的数值。在Python中,整数包括正整数、负整数和0,并且它的位数是任意的,主要用来进行数学运算

。②浮点数(float)浮点数由整数部分和小数部分组成,主要用于处理包括小数的数。一、数据类型认识Python简单数据类型在Python语言49③字符串(str)在Python中,加了引号的字符都被认为是字符串,其声明有三种方式,分别是:单引号、双引号和三引号,这三种引号形式在语义上没有差别,只是在形式上有些差别,其中单引号和双引号中的字符序列必须在一行上,而三引号内的字符序列可以分布在连续的行上。④布尔(bool)和其他编程语言一样,Python布尔类型也是用于逻辑运算,有两个值:True(真)和False(假)。在Python中的布尔值可以转化为数值,其中True表示1,False表示0。③字符串(str)在Python中,加了引号的字符都被认为是50>>>type(8)#type()函数返回数据的类型<class‘int’>#返回’int’类型>>>type(3.14)<class‘float’>#返回’float’类型>>>type(‘Thankyou!’)<class‘str’>#返回’str’类型>>>type(True)<class‘bool’>#返回’bool’类型数据类型——简单数据类型>>>type(8)#ty51Python语言中,复合数据类型有元组(tuple)、集合(set)、列表(dict)等。元组BookInfo0=(“Id0010230,15.68,36”)BookInfo1=(“Id2315937,20,2”)

>>>bookinfo0=('id0010230',15.58,36)>>>type(bookinfo0)<class'tuple'>>>>>>>bookinfo1=('id2315937',20,2)>>>bookinfo1[1]20数据类型——复合数据类型Python语言中,复合数据类型有元组(tuple)、集合(52集合Bookset={bookinfo0,bookinfo1}>>>bookinfo0=('id0010230',15.68,36)>>>bookinfo1=('id2315937',20,2)>>>bookset={bookinfo0,bookinfo1}>>>type(bookset)<class'set'>>>>列表Booklist=[bookinfo0,bookinfo1]>>>bookinfo0=('id0010230',15.68,36)>>>bookinfo1=('id2315937,20,2')>>>booklist=[bookinfo0,bookinfo1]>>>type(booklist)<class'list'>>>>——复合数据类型数据类型集合>>>bookinfo0=('id0010230',153一、数据类型Python复合数据类型某用户预订的商品编号为ID0010230、单价为15.68元,数量为36,可将这3个不同类型的简单数据组织成“元组”复合数据类型:>>>BookInfo0=('ID0010230',15.68,36)>>>type(BookInfo0)<class'tuple'>#返回元组类型另一用户预订的商品编号为ID2315937、单价为20元,数量为2,可记作:>>>BookInfo1=('ID2315937',20,2)>>>BookInfo1[1]20#返回元组BookInfo1中索引为1的项的值在Python语言中,复合数据类型有元组(tuple)、集合(set)、列表(list)、字典(dict)等①元组

一、数据类型Python复合数据类型某用户预订的商品编号为I54一、数据类型订单汇总,可以定义为一个集合(集合里的项称为元素,彼此之间没有顺序):>>>BookSet={BookInfo0,BookInfo1}>>>type(BookSet)<class'set'>#返回集合类型>>>BookSet{('ID2315937',20,2),('ID0010230',15.68,36)}#返回集合的值>>>BookInfo0inBookSet#测试元素BookInfo0是否属于集合BookSetTrue#返回逻辑真②集合一、数据类型订单汇总,可以定义为一个集合(集合里的项称为元素55订单汇总,也可以按订单产生的先后顺序组成一个列表(列表里的项是有顺序编号的):>>>BookList=[BookInfo0,BookInfo1]>>>type(BookList)<class'list'>#返回列表类型>>>BookList[0]('ID0010230',15.68,36)>>>BookList[1]('ID2315937',20,2)>>>BookList[0][1]*BookList[0][2]+BookList[1][1]*BookList[1][2]604.48#返回计算结果③列表订单汇总,也可以按订单产生的先后顺序组成一个列表(列表里的项56是Python中标准数据类型之一,它也是容器类型,可以存储不同的数据,并且具有可变性。字典顾名思义,就是拥有类似字典的特性,通过“键”能够快速查找对应的“值”。这种基本的数据结构称为“键值对”。广义上来说,其他标准数据类型中也存在“键值对”,只是它们的键只能是索引号,而字典的键可以是不可变的数据类型(数字、字符串和元组)。实例1tel=dict([('sape',4139),('guido',4127),('jack',4098)])print(tel)#输出结果为:{'sape':4139,'guido':4127,'jack':4098}#会发现直接转化成字典。key:value实例2tec={x:x**2forxin(2,4,6)}print(tec)#输出结果{2:4,4:16,6:36}④字典(dictionary)是Python中标准数据类型之一,它也是容器类型,可以存储不57实例3knights={'Apollo':'theBrave','Prothemeus':'theugly'}fork,vinknights.items():print(k,'---->',v)#输出结果Apollo---->theBraveProthemeus---->theugly实例4fori,vinenumerate(['tick','Dida','Mouo']):print(i,v)#enumerate()函数返回的是列表中的索引与键值#输出结果0tick1Dida2Mouo实例5questions=['name','quest','favoriatecolor']answers=['lacelot','theholygrail','blue']forq,vinzip(questions,answers):print('Whatisyour{0}?Itis{1}.'.format(q,v))#通过zip函数把两个不相关的序列,弄成一组#输出结果为:Whatisyourname?Itislacelot.Whatisyourquest?Itistheholygrail.Whatisyourfavoriatecolor?Itisblue.实例358数据类型转换:函数格式使用示例描述int(x[,base])int("8")

可以转换的包括String类型和其他数字类型,但是会丢失精度

float(x)

float(1)/float("1")

可以转换String和其他数字类型,不足的位数用0补齐,例如1会变成1.0

complex(real,imag)

complex("1")/complex(1,2)

第一个参数可以是String或者数字,第二个参数只能为数字类型,第二个参数没有时默认为0

str(x)

str(1)

将数字转化为String

repr(x)

repr(Object)

返回一个对象的String格式

eval(str)

eval("12+23")

执行一个字符串表达式,返回计算的结果,如例子中返回35

list(s)

list((1,2,3,4))

将序列转变成一个列表,参数可为元组、字典、列表,为字典时,返回字典的key组成的集合

chr(x)

chr(0x30)

chr()用一个范围在range(256)内的(就是0~255)整数作参数,返回一个对应的字符。返回值是当前整数对应的ascii字符。

ord(x)

ord('a')

返回对应的ASCII数值,或者Unicode数值

hex(x)

hex(12)

把一个整数转换为十六进制字符串

oct(x)

oct(12)

把一个整数转换为八进制字符串数据类型转换:函数格式使用示例描述int(x[,base]59编制订单数据处理程序网店接受了大量的订单,如何安排发货呢?实际上,网店在处理订单时,一般采取“先下单,先发货”的原则。因此,所有的订单将按照下单的时间顺序放进一个列表中,先放进去的先发货,所有订单排列在一起,像是一群人在排队。

下面的Python程序可以实现以下功能:提供“添加订单”“发货”“查看订单列表”“退出”四个操作选项。当我们选择“1”后输入订单数据,程序将订单数据添加到订单数据表中;选择“2”后,程序将当前订单列表中最早进入的数据删除(表示已安排发货处理);选择“3”可以显示当前订单列表中所有的订单数据;选择“4”将结束运行。请你完善下列Python程序,模拟添加订单和发货的过程,了解订单列表的操作过程。编制订单数据处理程序网店接受了大量的订单,如何60编制订单数据处理程序listque=[] #定义列表listque存储订单x=0while(x!=4): #当x=!4时,执行循环

print('1.添加订单')print('2.发货')print('3.查看订单列表')print('4.退出')x=int(input("输入你的选择:")) #输入选择项

ifx==1:y=input("输入订单编号:") #输入订单编号

listque.append(y) #在列表listque中添加订单号

elifx==2:iflen(listque)==0: #如果订单列表为空

print("订单列表为空")else:print("发货单号:"+listque.pop(0))

elifx==3:print("等待发货:",listque) #查询列表listque中的订单号

print()input("运行完毕,请按回车键退出...")订单处理程序数据类型编制订单数据处理程序listque=[]61数据结构:存在特定关系的数据元素的集合。常用的数据结构有:数组,栈,链表,队列,树,图,堆,散列表等数据结构也称逻辑结构:集合结构、线性结构、树结构、图结构(网状结构)数据结构数据结构:存在特定关系的数据元素的集合。数据结构也称逻辑结62数据结构

——线性数据结构线性数据结构又称线性表。特点:除首元素没有前驱元素、尾元素没有后继元素外,其它元素都只有一个前驱元素和一个后继元素。数据元素之间是一对一的关系。数据结构——线性数据结构线性数据结构又称线性表。63常见的线性数据结构(1)栈常见的线性结构有:栈、队列和串等都属于线性结构。栈是一种特殊的线性表,仅能在线性表的一端操作,栈顶允许操作,栈底不允许操作。栈的特点是:先进后出,或者说是后进先出,从栈顶放入元素的操作叫入栈,取出元素叫出栈。常见的线性数据结构(1)栈常见的线性结构有:栈、队列和串等64队列与栈一样,也是一种线性表,不同的是,队列可以在一端添加元素,在另一端取出元素,也就是:先进先出。从一端放入元素的操作称为入队,取出元素为出队,示例图如下:

(2)队列典型的例子如超市里排队付款的队伍。队列与栈一样,也是一种线性表,不同的是,队列可以在一端添加元65队列是一种有限制的线性结构。特点:数据元素只能在一端依次添加(进队),在另一端依次删除(出队)。队列在Python中,用列表实现队列的创建;队列的基本操作:入队,出队,求队长,判队空。

——队列数据结构队列是一种有限制的线性结构。队列在Python中,用列表实现66队列的计算机实现:在Python中,队列一般用列表(list)实现,常用操作:q=[]#定义空列表qq.append(x)#元素x入队(添加)q.pop(0)#返回队首元素,队首元素出队(删除)

len(q)#返回队列q的长度(元素个数)q[i]#返回列表q中索引(index)为i的元素.索引有2套编号方式:

正编号(从左到右编号依次为0,1,2,…)和负编号(从右到左编

号依次为-1,-2,-3,…)数据结构

——队列队列的计算机实现:在Python中,队列一般用列表(list67阅读教材

“探究快递配送过程”的活动1,了解快递派送线路,完成P60的连点成树。派送点学校收发室某单位传达室收件人A同学收件人B同学职工小王职工小李ABCDEFG数据结构

——树结构阅读教材“探究快递配送过程”的活动1,了解快递派送线路,68树的递归定义如下:树是由n(n>=0)个节点组成的有限集合。若n=0,则称为空树。任何一个非空树均满足以下二个条件:(1)仅有一个根节点。(2)当n>0时,其余节点可分为m(m>=0)个互不相交的有限集合,其中每个集合又是一棵树,并称为根的子树。特点:数据元素之间是一对多的关系。数据结构树结构是一种具有层次关系的非线性结构。

——树结构树的递归定义如下:树是由n(n>=0)个节点组成的有限集合。69树结构树是一种具有层次关系的非线性数据结构树结构树是一种具有层次关系的非线性数据结构70快递到达目的地城市后,物流图的结构呈树状快递到达目的地城市后,物流图的结构呈树状71了解物流网络了解物流网络72岳阳市长沙市南通市南京泰州市扬州市了解物流网络数据结构

——图结构岳阳市长沙市南通市南京泰州市扬州市了解物流网络数73图结构结构是由--组节点(称为顶点)和--组节点间的连线(称为边或弧)构成的一种数据结构。图结构中的每个顶点都可以与其他顶点有边相连,图结构中数据元素之间是多对多的关系。图3.2.6表示的是商品从供货点到收货点的派送过程的图结构。图3.2.7也是--个图结构,其中,标为(4“1”的顶点与两条边相连,顶点“4”与“2”“8”“9”相连。在物流网络中,分拨中心、配送中心、货物需求点等可以抽象为图的顶点,城市道路、各级铁路等可以抽象为图的边,如城市以及城市之间的运输道路就是图结构。利用图结构,我们还可以解决物流中的许多问题,如道路网络分析、车辆运营安排等。图结构结构是由--组节点(称为顶点)和--组74图结构是由一组节点(称为顶点)和一组节点间的连线(称为边或弧),构成的一种数据结构。特点:图结构中的每个顶点都可以与其他顶点有边相连,数据元素之间是多对多的关系。数据结构

——图结构①②③④⑤⑥

所有的顶点构成一个顶点集合,所有的边构成边的集合,一个完整的图结构就是由顶点集合和边集合组成。图结构在数学上记为以下形式:

G=(V,E)或者

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论