1、计算机科学导论Python程序设计第3讲 元组与字典信息管理系 教师:柳青 电子信箱:L 办公室:博识楼418 电话:67703852 答疑时间:周三34节,8-15周 周四5-8节,1-16周 周五1-4节,16、810、14、16、17周 夜间自习辅导时间:周四1112节,110周教师信息2上周回顾解决方案2 将输入的数据存放到一个列表中,再用Python语言中的sort()对列表中的数据进行排序后输出。3结束结束输出排序后的结果输出排序后的结果开始开始用用sort()方法对列表方法对列表中中数据进行数据进行排序排序输入输入多多个个数据数据存放存放在在变量变量中中上周回顾思考题 如果要计算
2、列表中的所有数据的平均值,在Python中没有类似于avg()函数可用,用什么方法可以实现该功能?现有列表数据为:number_list=35,68,90,79,80,56,77 编写程序实现计算上述列表中数据平均值的功能并输出,程序保存为eg3.py4运行结果:上周回顾思考题程序代码eg3.py5元组 元组和列表类似,但其元素是不可变的,元组一旦创建,用任何方法都不可以修改其元素。元组的定义方式和列表相同,但定义时所有元素是放在一对圆括号“(”和“)”中,而不是方括号中。下面这些都是合法的元组:(10,20,30,40)(crunchy frog,ram bladder,lark vomit
3、)6元组操作_创建元组 创建元组:使用“=”将一个元组赋值给变量。注意:如不加逗号,注意:如不加逗号,(a)会会被认为被认为是放是放在括号中的字符串在括号中的字符串7元组操作_读取元素 读取元素:用变量名加元素序号(放中括号中)即可访问元组中某个元素 同列表相同,元组的元素都有固定的顺序,第一个元素序号也为0,合法的元组元素序号的规定与列表相同。8元组操作_元组切片 元组切片:与列表一样,元组也可以进行切片操作 对列表切片可以得到新的列表;对元组切片可以得到新的元组。9元组操作_检索元素 使用count()方法计算元组中某个元素出现的次数;使用in运算符返回某个元素是否在该元组中;使用inde
4、x()方法返回某个元素在元组中的准确位置。10元组操作_变量赋值 可以利用元组来一次性的对多个变量赋值。11元组和列表的区别 元组中的数据一旦定义就不允许更改。元组没有append()或extend()方法,无法向元组中添加元素;元组没有remove()或pop()方法,不能从元组中删除元素。元组与列表相比有下列优点:元组的速度比列表更快。如果定义了一系列常量值,而所需做的仅是对它进行遍历,那么一般使用元组而不用列表。元组对不需要改变的数据进行“写保护”将使得代码更加安全。一些元组可用作字典键(特别是包含字符串、数值和其它元组这样的不可变数据的元组)。列表永远不能当做字典键使用,因为列表不是不
5、可变的。12元组和列表的转换 元组可转换成列表,反之亦然。内建的tuple()函数接受一个列表参数,并返回一个包含同样元素的元组 list()函数接受一个元组参数并返回一个列表。从效果上看,tuple()冻结列表,而list()融化元组。13示例1:元组和列表的转换 新建一个元组tuple_new(68,19.0,auto,True)把元组tuple_new转换为列表list_change 在列表list_change中添加元素98,03,10,tiger 最后把列表list_change再转换为元组tuple_change 显示列表和元组中的元素 程序保存为eg1_change.py14运行
6、结果示例1:程序eg1_change.py15字典定义 字典是键值对的无序、无重复的集合。字典中的每个元素包含两部分:键和值,向字典添加一个键的同时,必须为该键增添一个值。16字典操作_创建字典 创建字典 定义字典时,每个元素的键和值用冒号分隔,元素之间用逗号分隔,所有的元素放在一对大括号“”和“”中。17a_dict=server:db.diveintopython3.org,database:mysql字典操作_查找值 查找值 字典定义后,可以通过键来查找值,反之则不允许。18字典操作_显示字典 显示字典的键和值 显示字典的键 显示字典的值19字典操作_遍历字典 遍历字典 可以用循环语句来
7、遍历字典中每个元素的键和值。20字典操作_添加修改 添加和修改字典 字典没有预定义的大小限制。可以随时向字典中添加新的键值对,或者修改现有键所关联的值 添加和修改的方法相同,都是使用“字典变量名键名=键值”的形式 区分究竟是添加还是修改是看键名与字典中现有的键名是否重复,因为字典中不允许有重复的键。如不重复则是添加新健值对,如重复则是将该键对应的值修改为新值。21字典操作_字典长度 字典长度 与列表、元组类似,可以用len()函数返回字典中键的数量。22a_dict=server:db.diveintopython3.org,database:mysql,zero:this is 0字典操作_
8、字典检索 字典检索 可以使用in运行符来测试某个特定的键是否在字典中。23a_dict=server:db.diveintopython3.org,database:mysql,zero:this is 0字典操作_删除1 删除元素和字典 可以使用del语句删除指定键的元素或整个字典a_dict=database:blog,server:db.diveintopython3.org,user:mark24字典操作_删除2 删除元素和字典 使用clear()方法来删除字典中所有元素 比较 a_dict.clear()将删除字典中所有元素 del a_dict 将删除整个字典。25字典操作_删除3
9、 删除元素和字典 使用pop()方法删除并返回指定键的元素。a_dict=database:blog,server:db.diveintopython3.org,user:mark26示例2:字典应用,保存为eg2_dict.py 创建字典 studscore=唐僧:55,孙悟空:78,猪八戒:40,沙僧:96,如来:65,观音:92,白骨精:70,红孩儿:99,太上老君:68,白龙马:87 添加和修改字典 添加太白金星:缺考,玉皇大帝:90 将“唐僧”的成绩改为60 删除“白骨精“的成绩,统计元素个数,实现输入姓名能查找成绩27运行结果示例2:程序eg2_dict.py28示例3 字典问题
10、提出问题:查字典问题 问题描述:根据用户输入的关键字的简写查询相应名称解释。分析:将一些程序设计中常用名称存放在字典中,键是其英文的第一个字母,值是该名称的解释。由用户输入要查询的名称的英语第一个字母,若在合法的范围内则进行查询、输出,若不在范围内则结束程序。29 比如:定义这样一个字典,通过输入ae,得到该名称的解释 a:algorithm,算法,解决一种问题的大致步骤 b:bug,臭虫,程序里的错误 c:compile,编译,把用高级程序语言写的程序转换成低级语言 d:debugging,除虫,找到及移除程序设计错误的过程 e:exception,异常,执行错误的另一个名称运行结果:字典问
11、题算法流程图开始开始定义字典定义字典结束结束输入输入ae范围内的字母范围内的字母输出查字典的结果输出查字典的结果30字典问题程序eg3_dict.py31理解该程序问题:表示什么意思?思考题:改进示例2 将示例2另存为“eg2_dict_改进.py”要求:可以输入多个姓名,得到成绩,当字典中没有该姓名时,程序运行结束32运行结果:说明 元组和列表之间可以进行相互转换,那么字典和元组、字典和列表如何进行相互转换?33字典可以转为字典可以转为元组元组字典转为字典转为列表列表注意:元组和列表不能转换为字典。注意:元组和列表不能转换为字典。下讲内容 选择结构34课堂练习 将本章课件中涉及的所有源程序在Python下输入、调试并运行 完成示例 完成思考题35 36