资源简介 中小学教育资源及组卷应用平台第三单元挑战按解密规则提取情报 教材分析本节的主要内容是按解密规则提取情报。本项目开展的学习、讨论和实践,让学生通过问题解决,理解包括字符串、队列、栈在内的线性表的概念和基本操作,并编程实现。提升信息意识,提高数据素养,肩负起信息社会责任,从容应对数据时代的各项挑战。 教学目标1.理解队列的概念,并能编程实现顺序队列的进队、出队操作;2.理解栈的概念,并能编程实现顺序栈的进栈、出栈操作;3.理解字符串的概念及基本操作; 教学重点1.利用队列处理大写字母分解成小写字母;2.利用栈处理字母的逆序排列;3.利用线性表进行解密。 教学难点1.编写程序并运行调试; 教学方法体验法、讲授法、讨论法、示例法 教学准备 计算机教室、多媒体设备、多媒体广播软件、教学课件、安装Python编程的相关软件、学生上机练习的程序文件,学生工作单等。 教学过程一、新课导入利用多媒体展示密码系统在现实社会中的应用。引出挑战任务:按解密规则解密情报。什么是解密?将“密文”变为“明文( https: / / baike. / item / %E6%98%8E%E6%96%87 / 9684633"\t"https: / / baike. / item / %E8%A7%A3%E5%AF%86 / _blank )”的过程被称为解密。播放相关视频《一分钟了解密码》。二、项目任务情报常常采用加密的方式传递,以防泄露,接收方在接收加密的情报(密文)后,按照事先订立的规则来提取情报。假设情报原文为中文,解密规则为:(1)B→aA;(2)A→ebh;(3)加括号的字母序列变为逆序排列(去括号);(4)小写字母和汉字对应关系如表3-1所示:表3-1字母一汉字对应表请采用上述解密规则实现密文为“B(jdfcgi)”的情报提取。三、项目指引本项目要用到栈、队列和线性表。1.利用队列处理B:aebh(由B→aA,A→ebh规则得)。2.利用栈处理:(jdfcgi)→igcfdj。3.利用线性表(字母一汉字对应表)进行情报提取算法:完整程序代码如下:#!/usr/bin/python##--coding:UTF-8--queue=[]#用列表模拟队列stack=[]#用列表模拟栈If_name_=='_main_':var1=””list1=['a','b','c','d','e','f','g','h','i','j']list2=['不','相','他','间','要','是','陈','信','小','谍']str=input()#输入密文字符串index=0#设置密文字符串下标初始值为0whileindex!=len(str):ifstr[index]!='B'andstr[index]!='A'andstr[index]!='(':quene.append(str[index])#当密文字符不为特殊字符时,将字符加入队列continueIfstr[index]=='B':queue.append('a')queue.append('e')queue.append('b')queue.append('h')#当密文字符为B时,将字符a,e,b,h入队列,此处queue实为列表,因此无法用en表示进队ifstr[index]=='A':queue.append('e')queue.append('b')queue.append('h')#当密文字符为A时,将字符e,b,h入队列Ifstr[index]=='(':index=index+1whilestr[index]!=')':stack.append(str[index])#此处stack实为列表,因此无法用push表示入栈index=index+1#将()内的字符压入栈中whilestack!=[]:#只要栈不空queue.append(stack.pop())#将栈内字符依次出栈并逐个加入队列中index=index+1forletterinqueue:foriinrange(len(list1)):iflist1[i]==letter:var1=var1l+list2[i]Break#比对list1,将对应位置list2中的汉字加入var1中print(var1)#输出var1四、交流评价与反思以自己熟悉的信息表达工具(如演示文稿等)制作电子作品,通过网络或课堂展示交流自己的算法和程序,并对他人的作品进行评价。21世纪教育网www.21cnjy.com精品试卷·第2页(共2页)HYPERLINK"http://21世纪教育网(www.21cnjy.com)"21世纪教育网(www.21cnjy.com)(共18张PPT)按解密规则提取情报信息技术沪教版选择性必修1第三单元挑战一、新课导入二、项目任务三、项目指引四、交流评价与反思一、新课导入二、项目任务情报常常采用加密的方式传递,以防泄露,接收方在接收加密的情报(密文)后,按照事先订立的规则来提取情报。假设情报原文为中文,解密规则为:(1)B→aA;(2)A→ebh;(3)加括号的字母序列变为逆序排列(去括号);(4)小写字母和汉字对应关系如表3-1所示:请采用上述解密规则实现密文为“B(jdfcgi)”的情报提取。三、项目指引本项目要用到栈、队列和线性表。1.利用队列处理B:aebh(由B→aA,A→ebh规则得)。2.利用栈处理:(jdfcgi)→igcfdj。3.利用线性表(字母一汉字对应表)进行情报提取算法:#!/usr/bin/python##--coding:UTF-8--queue=[]#用列表模拟队列stack=[]#用列表模拟栈If_name_=='_main_':var1=””list1=['a','b','c','d','e','f','g','h','i','j']list2=['不','相','他','间','要','是','陈','信','小','谍']str=input()#输入密文字符串index=0#设置密文字符串下标初始值为0whileindex!=len(str):ifstr[index]!='B'andstr[index]!='A'andstr[index]!='(':quene.append(str[index])#当密文字符不为特殊字符时,将字符加入队列continueifstr[index]=='B':queue.append('a')queue.append('e')queue.append('b')queue.append('h')#当密文字符为B时,将字符a,e,b,h入队列,此处queue实为列表,因此无法用en表示进队ifstr[index]=='A':queue.append('e')queue.append('b')queue.append('h')#当密文字符为A时,将字符e,b,h入队列ifstr[index]=='(':index=index+1whilestr[index]!=')':stack.append(str[index])#此处stack实为列表,因此无法用push表示入栈index=index+1#将()内的字符压入栈中whilestack!=[]:#只要栈不空queue.append(stack.pop())#将栈内字符依次出栈并逐个加入队列中index=index+1forletterinqueue:foriinrange(len(list1)):iflist1[i]==letter:var1=var1l+list2[i]break#比对list1,将对应位置list2中的汉字加入var1中print(var1)#输出var1四、交流评价与反思以自己熟悉的信息表达工具(如演示文稿等)制作电子作品,通过网络或课堂展示交流自己的算法和程序,并对他人的作品进行评价。谢谢21世纪教育网(www.21cnjy.com)中小学教育资源网站有大把高质量资料?一线教师?一线教研员?欢迎加入21世纪教育网教师合作团队!!月薪过万不是梦!!详情请看:https://www.21cnjy.com/help/help_extract.php 展开更多...... 收起↑ 资源列表 第三单元挑战.doc 第三单元挑战.mp4 第三单元挑战.pptx