中小学教育资源及组卷应用平台
第三单元挑战
按解密规则提取情报
教材分析
本节的主要内容是按解密规则提取情报。本项目开展的学习、讨论和实践,让学生通过问题解决,理解包括字符串、队列、栈在内的线性表的概念和基本操作,并编程实现。提升信息意识,提高数据素养,肩负起信息社会责任,从容应对数据时代的各项挑战。
教学目标
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
#设置密文字符串下标初始值为0
while
index
!
=
len(str):
if
str[index]!=
'B'
and
str[index]!='A'
and
str[index]!='(':
quene.append(str[index])
#当密文字符不为特殊字符时,将字符加入队列
continue
If
str[index]=='B':
queue.append('a')
queue.append('e')
queue.append('b')
queue.append('h')
#当密文字符为B时,将字符a,e,b,h入队列,此处queue实
为列表,因此无法用en表示进队
if
str[index]=='A':
queue.append('e')
queue.append('b')
queue.append('h')
#当密文字符为A时,将字符e,b,h入队列
If
str[index]=='(':
index=index+1
while
str[index]!=')':
stack.append(str[index])
#此处stack实为列表,因此无法用push表示入栈
index=index+1
#将()内的字符压入栈中
while
stack!=[]:
#只要栈不空
queue.append(stack.pop())
#将栈内字符依次出栈并逐个加入队列中
index=index+1
for
letter
in
queue:
for
i
in
range(len(list1)):
if
list1[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
#设置密文字符串下标初始值为0
while
index
!
=
len(str):
if
str[index]!=
'B'
and
str[index]!='A'
and
str[index]!='(':
quene.append(str[index])
#当密文字符不为特殊字符时,将字符加入队列
continue
if
str[index]=='B':
queue.append('a')
queue.append('e')
queue.append('b')
queue.append('h')
#当密文字符为B时,将字符a,e,b,h入队列,此处queue实
为列表,因此无法用en表示进队
if
str[index]=='A':
queue.append('e')
queue.append('b')
queue.append('h')
#当密文字符为A时,将字符e,b,h入队列
if
str[index]=='(':
index=index+1
while
str[index]!=')':
stack.append(str[index])
#此处stack实为列表,因此无法用push表示入栈
index=index+1
#将()内的字符压入栈中
while
stack!=[]:
#只要栈不空
queue.append(stack.pop())
#将栈内字符依次出栈并逐个加入队列中
index=index+1
for
letter
in
queue:
for
i
in
range(len(list1)):
if
list1[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