5.3识别单词(课件)-《程序设计基础(Python)》同步教学(电子工业出版社)

2024-08-05
| 33页
| 68人阅读
| 2人下载
普通

内容正文:

项目5 灵活使用组合数据 项目内容 随机分配办公室 识别单词 中英文数字对照表 01 02 03 项目目标 知识目标 熟悉组合数据类型的分类 熟悉序列类型的特点 熟悉列表类型的特点及基本操作 熟悉字典类型的特点及基本操作 会运用列表和元组解决实际问题 会运用字典和集合解决实际问题 技能目标 3 识别单词 03 认识集合 Python中的集合不同于列表和元组类型,集合存储的元素是无序的且不允许重复的。集合不能像列表、元组一样通过索引访问元素,但集合可以执行集合的并、交、差等运算。集合的使用频率虽然没有像列表、元组那样高。 Python中的集合存储的元素是无序的且不允许重复。常用于成员关系的测试和从序列中删除重复项。 创建集合 Python中的集合分为可变集合与不可变集合。可变集合:由set()函数创建,集合中的元素可以动态地增加或删除。不可变集合:由frozenset()函数创建,集合中的元素不可改变。 set()函数的语法格式如下: frozenset()函数的语法格式如下: set([iterable]) set() set([1,2,3,4,5,6]) 上述函数的参数iterable接收一个可迭代对象,若没有指定可迭代的对象,则会返回一个空的集合。 frozenset([iterable]) frozenset('python') 使用set()函数创建可变集合。 直接使用花括号创建可变集合,花括号中的多个元素以逗号分隔。 可变集合的创建 set_one = set([1, 2, 3]) set_two = set((1, 2, 3)) set_three = {1, 2, 3} 使用frozenset()函数创建不可变集合。 不可变集合的创建 frozenset_one = frozenset(('a', 'c', 'b', 'e', 'd')) frozenset_two = frozenset(['a', 'c', 'b', 'e', 'd']) 创建集合 实例3:已知列表li_one=[1,2,1,2,3,5,4,3,5,7,4,7,8],编写程序实现删除列表li_one中重复数据的功能。 提示:可以利用集合的不可重复性来实现,即将列表转换为集合,重复数据即可被去除。 li_one = [1,2,1,2,3,5,4,3,5,7,4,7,8] li_one = list(set(li_one)) print(li_one) 复制集合 由于集合是无序的,因此,集合不支持索引和切片操作,仅支持部分序列的通用操作。 >>> set1={"123",521,"xyz"} >>> set2=set1.copy() >>> print(set2) {'123', 521, 'xyz'} 清空集合 clear()方法可以清空可变集合中的元素。 clear_set = {'red', 'green', 'black'} clear_set.clear() print(clear_set) 添加元素 可变集合的add() 或update()方法都可以实现向集合中添加元素,其中 add()方法只能添加一个元素,而update()方法可以添加多个元素。 demo_set = set() demo_set.add('py') demo_set.update("thon") print(demo_set) 删除元素 remove()方法用于删除可变集合中的指定元素。 discard()方法可以删除指定的元素,但若指定的元素不存在,该方法不执行任何操作。 pop()方法用于删除可变集合中的随机元素。 remove_set = {'red', 'green', 'black'} remove_set.remove('red') print(remove_set) remove_set.discard('green') remove_set.discard(‘blue') print(remove_set) remove_set.pop() print(remove_set) 集合应用 实例4:模拟生成产品序列号。 假设每款产品都有一个25位的、用来区分每款产品的产品序列号。产品序列号由五组被“-”分隔开的字母和数字混合编制的字符串组成,每组字符串由五个字符组成,如36XJE-86JVF-MTY62-7Q97Q-6BWJ2。每个字符取自以下24个字母和数字中的一个:BCEFGHJKMPQRTVWXY2346789,采用这24个字符的原因是为了避免混淆相似的字母和数字,如l和1,o和0等,避免产生不必要的麻烦。 本实例要求在两行中分别输入一个正整数,第一个表示要生成序列号的个数,第二个表示随机数种子。随机数种子函数为random.seed(n)。输出指定个数的序列号。 代码如下: import random n=int(input()) x=int(input()) se={'B','C','E','F','G','H','J','K','M','P','Q','R','T','V','W','X','Y','2','3','4','6','7','8','9'} random.seed(x) for i in range(n): st='' for j in range(5): for k in range(5): st+=random.choice(list(se)) st+='-' print(st[:-1]) 认识字典 Python中,字典(dict)是映射类型的体现,它是“键-值”数据项的组合,每个元素是一个键值对,即元素是(key, value),元素之间是无序的。键值对(key, value)是一种二元关系。 创建字典 使用花括号“{}”创建字典时,字典的键(key)和值(value)使用冒号连接,每个键值对之间使用逗号分隔。 使用花括号创建字典 {“中国“:”北京”, “法国“:”巴黎" } {“刘红“:397, “吴静“:389, “李琳“:393 } {} 使用dict()函数创建字典时,键和值使用“=”进行连接。 使用dict()函数创建字典 dict(中国=”北京”, 法国=”巴黎“) dict(刘红=397,吴静=389,李琳=393 ) dict( ) 访问字典 color_dict = {'purple': '紫色','green': '绿色','black': '黑色'} color_dict['purple'] color_dict[‘red'] Traceback (most recent call last): KeyError: 'red' 为了避免引起KeyError异常,当访问字典元素时需要先使用in与not in检测某个键是否存在。 在字典中,不能通过索引和切片操作来访问元素,只能通过“键”来访问所对应的“值”。由于字典中的键是唯一的,因此,可以通过键获取对应的值。如果字典中不存在待访问的键,就会引发KeyError异常。 字典应用 实例5:查询手机号。利用字典建立一个通信录,编写一个查询手机号码的程序。 pho={'张溢':13966527738,'李梅':17789665533,'王雪':17359782211,'赵亮':18259676767,'钱糖':15973984490} name = input('输入要查询人的姓名:') if name in pho: print("%s的手机号码是%s"%(name,pho[name])) else: print("通信录里没有%s的手机号码"%name) 遍历字典 使用items()方法可以查看字典的所有元素,该方法会返回一个dict_items对象。dict_items对象支持迭代操作,结合for循环可遍历其中的数据,并将遍历后的数据以(key, value)的形式显示。 遍历字典的所有元素 per_info = {'001': '张三', '002': '李四', '003': '王五'} print(per_info.items()) for i in per_info.items(): print(i) 字典的遍历包括遍历所有的元素、遍历所有的键及遍历所有的值。 遍历字典 遍历字典中的所有键 通过keys()方法可以查看字典中所有的键,该方法会返回一个dict_keys对象 。dict_keys对象支持迭代操作,通过for循环遍历输出字典中所有的键。 per_info = {'001': '张三', '002': '李四', '003': '王五'} print(per_info.keys()) for i in per_info.keys(): print(i) 遍历字典 遍历字典中的所有值 使用values()方法可以遍历字典的所有值, 该方法会返回一个dict_values对象。dict_values对象支持迭代操作,可以使用for循环遍历输出字典中所有的值。 per_info = {'001': '张三', '002': '李四', '003': '王五'} print(per_info.values()) for i in per_info.values(): print(i) 字典遍历 实例6:统计字母出现的次数。 已知字符串str=‘goodmorning,Python!’,请利用字典记录各个字符及其出现的次数。本实例需要首先创建一个空字典,将字符串中的每一个字母作为字典的键来遍历所有的键,通过遍历统计不同字母出现的次数。 str = 'goodmorning,Python!' count = {} for i in str: if i in count.keys(): count[i] += 1 else: count[i] = 1 print(count) 复制字典 字典中不允许出现相同的“键”,可以重复出现多个相同的“值”。 >>> dict1={'chinese': 100, 'math': 95, 'english': 97} >>> dict2= dict1.copy() >>> print(dict2) {'chinese': 100, 'math': 95, 'english': 97} 清空字典 利用clear()方法和del命令可以清空字典中的元素。 >>> dict1={'chinese': 100, 'math': 95, 'english': 97} >>> dict1=dict1.clear() >>> print(dict1) None >>> dict2={'a': 1, 'b': 2, 'c': 3} >>> print(dict2) {'a': 1, 'b': 2, 'c': 3} >>> del dict2 # 利用关键字清空字典 添加字典元素 字典可通过update()方法或指定的键添加元素。 add_dict = {'stu1': '小明'} add_dict.update(stu2='小刚') add_dict['stu3'] = '小兰' print(add_dict) 删除字典元素 pop()方法可以根据指定的键删除字典中的指定元素,若删除成功则返回目标元素的值。 per_info = {'001': '张三', '002': '李四', '003': '王五', '004': '赵六', } per_info.pop('001') print(per_info) 使用popitem()方法可以随机删除字典中的元素,若删除成功则返回目标元素。 popitem()方法 per_info = {'001': '张三', '002': '李四', '003': '王五', '004': '赵六'} per_info.popitem() print(per_info) pop()方法 修改字典元素 字典可通过update()方法或指定的键修改元素。 modify_dict = {'stu1': '小明', 'stu2': '小刚', 'stu3': '小兰'} modify_dict.update(stu2='张强') modify_dict['stu3'] = '刘婷' print(modify_dict) 字典应用 实例7:校验身份证号。 中国目前采用的是18位身份证号,其中第7~10位数字是出生年,第11、第12位数字是出生月份,第13、第14位数字是出生日期,第17位数字是性别,奇数为男性,偶数为女性,第18位数字是校验位,若身份证号码中的一位数字填错了(包括最后一个校验位),则校验算法可以检测出来。若身份证的相邻两位填反了,则校验算法也可以检测出来。身份证号的校验规则如下。 (1)将身份证号码前面的17位数字分别乘以不同的系数。从第1位到第17位的系数分别为:7-9-10-5-8-4-2-1-6-3-7-9-10-5-8-4-2。 (2)将这17位数字和系数相乘的结果相加。 (3)用加出来的和除以11,其余数只可能是:0-1-2-3-4-5-6-7-8-9-10,分别对应的最后一位身份证的号码为:1-0-X-9-8-7-6-5-4-3-2。 (4)通过上面的规则和操作得知,如果余数是2,就会在身份证的第18位数字上出现罗马数字X,如果余数是10,那么身份证的最后一位号码是2。 本实例是用户输入一个身份证号码,校验其是否是合法的身份证号码。 字典应用 id=input('请输入身份证号:') sum=0 tu=('7','9','10','5','8','4','2','1','6','3','7','9','10','5','8','4','2') d={0:'1',1:'0',2:'X',3:'9',4:'8',5:'7',6:'6',7:'5',8:'4',9:'3',10:'2'} for i in range(17): sum+=int(id[i])*int(tu[i]) if id[17]=='X': if sum%11==2: print('身份证号码校验为合法号码!') else: print('身份证校验位错误!') elif (sum%11+int(id[17]))%11==1: print('身份证号码校验为合法号码!') else: print('身份证校验位错误!') 任务实践-识别单词 周一到周日的英文单词依次为:Monday、Tuesday、Wednesday、Thusday、Friday、Saturday和Sunday,这些单词的首字母基本都不相同,在这7个单词的范围之内,通过第一个或前两个字母即可判断对应的是哪个单词。 本任务要求编写程序,实现根据第一或前两个字母输出Monday、Tuesday、Wednesday、Thusday、Friday、Saturday和Sunday之中完整单词的功能。 根据题意,本任务的完整单词包含Monday、Tuesday、Wednesday、Thusday、Friday、Saturday和Sunday7个,其中,Monday、Wednesday、Friday可根据用户输入的首字母判断,Tuesday和Thusday、Saturday和Sunday需根据用户连续输入两次字母才能进一步判断,具体规则如下: (1)若用户第一次输入的字母为 “m”、“w”和“f”,则直接返回“Monday”、“ Wednesday”和“Friday”; (2)若用户第一次输入“t”,需要再输入第2个字母进行判断,输入“h”返回“Thusday”,输入“u”返回“Tuesday”; (3)若用户第一次输入“s”,需要再输入第2个字母进行判断,输入“a”返回“Saturday”,输入“u”返回“Sunday”; (4)若用户第一次输入其它字母,则提示用户“请输入正确的字母”。 从以上分析可知,第一个或第二个字母可以作为获取完整单词的键,因此,可以创建一个包含7个键值对的字典,其中,键“m”、“w”和“f”对应的值为“Monday”、“Wednesday”和“Friday”,而键“t”和“s”对应的值是字典{'h': 'thursday', 'u': 'tuesday'}和{'a': 'saturday', 'u': 'sunday'}。 代码如下: #识别单词 tu_th = {'h': 'Thursday', 'u': 'Tuesday'} sa_su = {'a': 'Saturday', 'u': 'Sunday'} week = {'t':tu_th,'s':sa_su,'m':'Monday','w':'Wednesday','f':'Friday'} first_char = input('请输入第一位字母:').lower().strip() if first_char in ['a', 't', 's', 'm', 'w', 'f']: if week[first_char] == tu_th or week[first_char] == sa_su: second_char = input('请输入第二位字母:').lower().strip() if second_char in ['u', 'h', 'a']: print(week[first_char][second_char]) else: print('请输入正确字母') else: print(week[first_char]) else: print('请输入正确的字母') 项目总结 本项目通过3个任务分别介绍了Python中列表与元组、集合与字典的基本使用方法。首先介绍了列表,包括创建列表、访问列表、列表的遍历和排序、嵌套列表,以及添加、删除和修改列表元素等。然后介绍了元组,包括创建元组、访问元组等。最后介绍了集合和字典,包括创建集合、集合的操作、集合类型操作符创建字典、访问字典、字典的操作等。 通过本项目的学习,能够掌握列表和元组的基本使用方法,并能灵活运用列表和元组进行Python程序开发。能够熟练使用字典和集合存储数据,为后续的开发打好基础。 $$

资源预览图

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