Appearance
字符串的“魔法变身”——文本加密与解密工具
课题
字符串的“拆分与替换”:用Python实现简易密码加密器
教学时间
2课时(90分钟)
课前准备
- 教师端:电脑(Python 3.10+)、投影仪、多媒体课件(含凯撒密码历史动画、生活加密场景图:如手机密码、快递单信息遮挡)、实物道具(字母卡片A-Z、密码本模板)、“加密任务卡”(写有明文与密文对应示例)。
- 学生端:电脑(Python环境)、笔记本、双色笔(标注代码逻辑)、加密练习纸(提前打印明文句子)。
- 教学素材:代码模板(字符串操作基础框架)、奖励徽章(“加密小能手”“逻辑拆解王”)、AI代码小助手(可生成字符串处理示例代码)。
一、导入活动:从“秘密信件”到“代码加密”(15分钟)
活动1:“破译密码”游戏——感知加密逻辑
- 展示凯撒密码历史故事(动画片段):“古罗马凯撒用‘字母后移3位’传递军事秘密,A→D,B→E……”
- 发放字母卡片,分组挑战:已知密文“Khoor”,提示“后移3位”,让学生破译明文(答案:“Hello”)。
- 提问:“如果后移2位,‘A’会变成什么?”引导发现“加密=有规律的字符转换”。
活动2:生活中的加密场景——建立意义联结
- 展示图片:手机解锁密码(数字加密)、快递单上的“*”(遮挡部分姓名)、聊天软件的“加密对话”。
- 讨论:“为什么需要加密?”(保护隐私、信息安全),引出课题:“今天用Python让文字‘变身’,制作自己的加密工具”。
二、知识点讲解:字符串操作与加密算法(30分钟)
模块1:字符串——“字符的项链”(10分钟)
- 核心概念:字符串是用引号包裹的字符序列(如
"Hello"),像“穿在一起的珠子项链”,每个字符有固定位置(索引从0开始)。 - 基础操作演示:python
# 示例1:查看字符串长度(有多少颗“珠子”) text = "Python" print(len(text)) # 输出:6(共6个字符) # 示例2:字符串索引(找到第n颗“珠子”) print(text[0]) # 输出:P(第1个字符,索引0) print(text[2]) # 输出:t(第3个字符,索引2) - 关键规则:字符串索引从0开始(与生活中“第1个”差1),可通过
[索引]精准获取字符。
模块2:字符串的“拆分与替换”——“拆项链”与“换珠子”(10分钟)
- 比喻:
split()像“按规律拆项链”(按指定符号分割字符串),replace()像“替换珠子”(把某字符换成另一字符)。 - 代码示例:python
# 示例1:split()——按空格拆分句子为单词 sentence = "I love Python" words = sentence.split(" ") # 按空格拆分 print(words) # 输出:['I', 'love', 'Python'] # 示例2:replace()——替换字符(如遮挡敏感信息) phone = "13812345678" hidden_phone = phone.replace(phone[3:7], "****") # 替换中间4位为* print(hidden_phone) # 输出:138****5678
模块3:凯撒加密算法——“字符的位移魔法”(10分钟)
- 核心逻辑:通过
ord()(字符转ASCII码)和chr()(ASCII码转字符)实现字母位移,公式:- 加密:
密文ASCII = (明文ASCII - 基准ASCII + 偏移量) % 26 + 基准ASCII
(大写字母基准ASCII=65,小写字母=97,确保位移后仍为字母)
- 加密:
- 代码框架(以大写字母为例):python
def encrypt(text, shift): result = "" for char in text: # 遍历每个字符 if char.isupper(): # 判断是否为大写字母 # 计算加密后ASCII码:(原码-65 + 位移) %26 +65 encrypted_code = (ord(char) - 65 + shift) % 26 + 65 result += chr(encrypted_code) # 转成字符拼接到结果 else: result += char # 非大写字母不加密(如空格、数字) return result # 测试:偏移3位,加密"HELLO" print(encrypt("HELLO", 3)) # 输出:KHOOR
三、练习题设计:分层任务+加密实战(25分钟)
基础任务(全员完成):“固定偏移加密器”
- 要求:完善上述
encrypt()函数,支持小写字母加密(补充elif char.islower()逻辑),加密自己的姓名(如“Xiaoming”→偏移3位)。 - 示例框架(学生补充小写字母部分):python
def encrypt(text, shift): result = "" for char in text: if char.isupper(): encrypted_code = (ord(char) - 65 + shift) % 26 + 65 result += chr(encrypted_code) # 学生补充:处理小写字母(基准ASCII=97) elif char.islower(): ______ # 填写加密逻辑 else: result += char return result # 测试:加密自己的姓名 my_name = "______" # 填写姓名 encrypted_name = encrypt(my_name, 3) print(f"加密后的姓名:{encrypted_name}")
进阶任务(选做):“解密功能”与“自定义偏移”
- 要求:
- 编写
decrypt()函数(解密=加密的逆操作,偏移量取负数); - 让用户输入自定义偏移量(如
shift = int(input("请输入偏移量:"))),实现灵活加密。
- 编写
拓展任务(挑战):“密码本”批量加密
- 用
split()拆分多句明文(如"I like Python\nYou too"),批量加密后保存到变量,模拟“秘密信件”场景。
教师支持:
- 打开AI代码小助手,学生可提问“小写字母加密公式是什么?”“怎么让输入的偏移量生效?”,AI生成带注释的参考代码(如小写字母加密逻辑:
(ord(char) - 97 + shift) % 26 + 97)。
四、讲解与互评:从“加密”到“安全”(15分钟)
- 学生展示:选3组投屏代码,演示“加密-解密”全流程(如加密“今天天气好”→密文→解密回原文)。
- 点评重点:是否处理大小写(逻辑完整性)、偏移量计算是否正确(
%26防止超出字母范围)。
- 点评重点:是否处理大小写(逻辑完整性)、偏移量计算是否正确(
- 安全讨论:分组讨论“如果偏移量是1,加密后的密码容易被破解吗?”“怎么让加密更安全?”(引导想到“随机偏移量”“混合加密”)。
- 互评颁奖:投票选出“最严谨加密器”(无逻辑漏洞)和“最创意加密器”(如加入符号替换),颁发对应徽章。
五、总结与作业(5分钟)
课堂总结:
- 字符串是“字符项链”,可用
len()测长度、[索引]取字符; split()拆分字符串,replace()替换字符,是文本处理的基础工具;- 凯撒加密=字符按偏移量位移,核心是
ord()与chr()的转换(ASCII码运算)。
课后作业:
- 给朋友发一条“加密短信”(用自己的工具加密,附偏移量),下次课分享破译过程;
- 尝试在加密函数中加入“符号替换”(如把“a”换成“@”,增强安全性)。
教学理论支撑:
- 皮亚杰形式运算阶段理论:通过“字母位移”“ASCII码计算”等抽象逻辑任务,发展学生的命题思维与演绎推理能力(从具体加密案例到通用算法)。
- 维果茨基最近发展区:代码模板提供“半完成框架”(如预设
encrypt()函数结构),AI助手解决具体语法问题,帮助学生在“现有能力(字符串基础)”与“潜在能力(加密算法)”间搭建脚手架。 - STEAM教育融合:结合技术(Python字符串操作)、数学(模运算
%26)、社会科学(密码学历史与信息安全)、工程(工具功能迭代),让编程成为跨学科问题解决的载体。