1、3.2 3.2 数据与结构数据与结构(第第1 1课时课时) 一、数据类型 【教学目标】【教学目标】 认识数据的类型。 熟悉队列结构的概念和特点,能够运用Python语 言队列进行操作。 【教学重点】【教学重点】简单数据类型与线性数据结构。 【教学难点】【教学难点】线性数据结构。 一、数据类型 【做一做做一做】了解订单数据,填表了解订单数据,填表3.2.13.2.1 网站名称网站名称订单中的数据订单中的数据PythonPython中对应的数据类型中对应的数据类型 商品名称字符串 一、数据的类型一、数据的类型 一、数据类型 【做一做做一做】了解订单数据,填表了解订单数据,填表3.2.13.2.1
2、网站名称网站名称订单中的数据订单中的数据PythonPython中对应的数据类型中对应的数据类型 某电商网站某电商网站 商品名称字符串 单价单价浮点型浮点型 数量数量整型整型 某学某学生生学籍网学籍网 姓名姓名字符串字符串 出生日期出生日期日期型日期型 是否团员是否团员布尔型(逻辑型)布尔型(逻辑型) 一、数据类型 1、认识Python简单数据类型 在Python语言中,简单数据类型有整数(int)、浮点数 (float)、字符串(str)、布尔(bool)、复数(complex)等 数据类型。 整数(整数(intint) 用来表示整数数值,就是没有小数部分的数值。 在Python中,整数包括
3、正整数、负整数和0,并且它 的位数是任意的,主要用来进行数学运算。 浮点数(浮点数(floatfloat) 浮点数由整数部分和小数部分组成,主要用于处 理包括小数的数。 字符串(字符串(strstr) 在Python中,加了引号的字符都被认为是字符串,其 声明有三种方式,分别是:单引号、双引号和三引号,这 三种引号形式在语义上没有差别,只是在形式上有些差别, 其中单引号和双引号中的字符序列必须在一行上,而三引 号内的字符序列可以分布在连续的行上。 布尔(布尔(boolbool) 和其他编程语言一样,Python布尔类型也是用 于逻辑运算,有两个值:True(真)和False(假)。 在Pyth
4、on中的布尔值可以转化为数值,其中True表 示1,False表示0。 type(8) #type()函数返回数据的类型 #返回int类型 type(3.14) #返回float类型 type(Thank you!) #返回str类型 type(12) #返回bool类型 type(3-2j) #返回complex类型 练一练: 一、数据类型 2、Python复合数据类型 元元组组 某用户预订的商品编号为ID0010230、单价为15.68元,数量为36,可 将这3个不同类型的简单数据组织成“元组”复合数据类型: BookInfo0=(ID0010230,15.68,36) type(Book
5、Info0) #返回元组类型 另一用户预订的商品编号为ID2315937、单价为20元,数量为2,可记作: BookInfo1=(ID2315937,20,2) BookInfo11 20 #返回元组BookInfo1中索引为1的项的 值 在Python语言中,复合数据类型有元组(tuple)、 集合(set)、列表(list)、字典(dict)等 一、数据类型集合 订单汇总,可以定义为一个集合(集合里的项称为元素,彼此之间没有顺序): BookSet=BookInfo0,BookInfo1 type(BookSet) #返回集合类型 BookSet (ID2315937, 20, 2), (
6、ID0010230, 15.68, 36) #返回集合的值 BookInfo0 in BookSet #测试元素BookInfo0是否属于集合BookSet True #返回逻辑真 列表 订单汇总,也可以按订单产生的先后顺序组成一个列表(列表里的项是有顺序 编号的): BookList=BookInfo0, BookInfo1 type(BookList) #返回列表类型 BookList0 (ID0010230, 15.68, 36) BookList1 (ID2315937, 20, 2) BookList01*BookList02+BookList11*BookList12 604.48
7、 #返回计算结果 字典(dictionary)是Python中标准数据类型之一,它也 是容器类型,可以存储不同的数据,并且具有可变性。字典顾名思义, 就是拥有类似字典的特性,通过“键”能够快速查找对应的“值”。这 种基本的数据结构称为“键值对”。广义上来说,其他标准数据类型中 也存在“键值对”,只是它们的键只能是索引号,而字典的键可以是不 可变的数据类型(数字、字符串和元组)。 实例1 tel = dict(sape, 4139), (guido, 4127), (jack, 4098) print(tel) #输出结果为: sape: 4139, guido: 4127, jack: 409
8、8 #会发现直接转化成字典。 key : value 实例2 tec = x : x*2 for x in (2, 4, 6) print(tec) #输出结果 2: 4, 4: 16, 6: 36 实例3 knights =Apollo : the Brave, Prothemeus : the ugly for k, v in knights.items(): print(k,-,v) #输出结果 Apollo - the Brave Prothemeus - the ugly 实例4 for i, v in enumerate(tick, Dida, Mouo): print(i, v)
9、 # enumerate()函数返回的是列表中的索引与键值 #输出结果 0 tick 1 Dida 2 Mouo 实例5 questions = name, quest, favoriate color answers = lacelot, the holy grail, blue for q, v in zip(questions, answers): print(What is your 0? It is 1.format(q, v) #通过zip函数把两个不相关的序列,弄成一组 #输出结果为: What is your name? It is lacelot. What is your
10、quest? It is the holy grail. What is your favoriate color? It is blue. 3、数据类型转换: 函数格式函数格式使用示例使用示例描述描述 int(x ,base)int(x ,base)int(8) 可以转换的包括String类型和其他数字类型,但是会丢失精 度 float(x)float(x)float(1)/float(1)可以转换String和其他数字类型,不足的位数用0补齐,例如1会 变成1.0 complex(real ,imag)complex(real ,imag)complex(1)/complex(1, 2)
11、第一个参数可以是String或者数字,第二个参数只能为数字类型, 第二个参数没有时默认为0 strstr(x)(x)str(1)将数字转化为String repr(x)repr(x)repr(Object)返回一个对象的String格式 eval(str)eval(str)eval(12+23)执行一个字符串表达式,返回计算的结果,如例子中返回35 list(s)list(s)list(1,2,3,4)将序列转变成一个列表,参数可为元组、字典、列表,为字典时, 返回字典的key组成的集合 chr(x)chr(x)chr(0 x30)chr()用一个范围在 range(256)内的(就是0255
12、)整数作参 数,返回一个对应的字符。返回值是当前整数对应的ascii字符。 ord(x)ord(x)ord(a)返回对应的 ASCII 数值,或者 Unicode 数值 hex(x)hex(x)hex(12)把一个整数转换为十六进制字符串 oct(x)oct(x)oct(12)把一个整数转换为八进制字符串 1、线性结构: 二、数据结构二、数据结构 数据结构是指相互之间存在着一种或多种关系的数据元素的集合 和该集合中数据元素之间的关系组成 。常用的数据结构有:数 组,栈,链表,队列,树,图,堆,散列表等,如图所示: 数据结构有很多种,一般来说,按照数据的逻辑结构对其进行 简单的分类,包括线性结构
13、和非线性结构两类。 2、常见的线性数据结构 (1)栈 常见的线性结构有:栈、队列和串等都属于线 性结构。 栈是一种特殊的线性表,仅能在线性表的一端操作,栈顶允许 操作,栈底不允许操作。 栈的特点是:先进后出,或者说是后进 先出,从栈顶放入元素的操作叫入栈,取出元素叫出栈。 队列与栈一样,也是一种线性表,不同的是,队列可以在一端添加元队列与栈一样,也是一种线性表,不同的是,队列可以在一端添加元 素,在另一端取出元素,也就是:先进先出。从一端放入元素的操作素,在另一端取出元素,也就是:先进先出。从一端放入元素的操作 称为入队,取出元素为出队,示例图如下:称为入队,取出元素为出队,示例图如下: (2)队列 典型典型的例子如超市里排队付款的队伍。的例子如超市里排队付款的队伍。 练一练 试着模仿订单数据处理程序,编写单车道死胡同 停车管理程序(栈的应用)。 谢谢大家!