4.6 数据类型基础——作业:直男表白解码¶
内容梗概¶
本课布置并讲解数据类型基础的课后作业。老师先演示了一个"表白加密"小程序:把中/英文字符串(如"小红我爱你")通过 ord() 和 hex() 转换成一串十六进制数字发给对方猜。作业要求是逆向操作——写一个**破解程序**,把这样一串十六进制编码还原成原始文字。课上逐行讲解了加密程序的实现思路(遍历字符 → ord 转十进制整数 → hex 转十六进制 → 切片去掉 0x → 拼接),并给出了反向解码的提示。开头还顺带解答了同学关于在 VS Code 中打开终端、选择 CMD/PowerShell 的问题。
知识点详解¶
VS Code 终端使用(课前答疑)¶
- (约 00:31) 有同学问如何在 VS Code 下方打开 CMD/PowerShell 终端:不要按 F5 运行或启动调试,应点菜单"查看 → 终端"打开。
- (约 01:31) 若默认打开的不是想要的 shell,可在下拉框中选择"默认 shell"切换 CMD 或 PowerShell。
- (约 01:39) 快捷键:
Ctrl + 反引号(数字 1 左边那个键)开关终端。 - (约 01:45) 老师不推荐用其他调试工具运行代码(可能出现环境不一致问题),统一用终端方式运行;个别问题可在微信群或讨论网站提问。
作业内容¶
- (约 02:31) 作业:写一个**破解程序**——把加密后的一串十六进制数字输入进去,程序把原始文字打印出来。
- (约 07:54) 与上次作业一样提交(提到用 GitHub,但课上表示可能用不了,提交方式待再讨论);本次是硬核写代码,不用写实验报告。
加密程序的实现逻辑(老师讲解)¶
- (约 03:07) 定义原始字符串
confession(如"I love you,"),再定义空字符串message保存加密结果。 - (约 03:30) 用
for ch in confession:遍历字符串中的每一个字符(for ... in用法下节课展开,这里先用起来)。 - (约 07:26) 加密三步:
ord(ch)把字符转成十进制整数;hex(...)把整数转成以0x开头的十六进制字符串;- 用切片
[2:](从第三个字符取到最后)去掉0x前缀。 - (约 09:22) 把得到的两位十六进制片段追加到
message尾部(可用+=简写,与 C 语言同理),最后打印。 - (约 08:23) 运行示例:
'I'→0x49→ 取49;空格 →20;l→4C;o→4F……拼成一整串。
解码(作业)思路提示¶
- (约 10:19) 把加密逻辑反过来即可:
- 每次从编码串中取出**两个**字符;
- 前面加上
0x,用int(..., 16)转成整数; - 用
chr()转成字符; - 拼接到结果字符串。
- 老师故意不给出完整代码,要求同学自己思考完成。
示例与演示¶
- 老师在终端切到 desktop 目录运行加密程序,把"小红我爱你"转成一串十六进制 message,调侃这是"直男表白"的常见玩法(并发到群里让大家猜)。
- 逐行给加密代码写注释讲解:保存结果的
message、遍历字符的for ch in ...、ord→hex→切片→+=的组合写法(并展示了拆成中间变量c的易懂写法)。
重点与难点¶
- 作业核心链路:加密
ord → hex → [2:] → 拼接;解码取两位 → int(x, 16) → chr → 拼接,两处都要注意0x前缀的去掉与补回。 for ... in遍历字符串是超前知识,下节课(循环控制语句)才正式讲,作业中先模仿使用。- 切片
[2:]去前缀、+=追加,是本作业对 4.2 字符串知识的直接运用。 - 遇到运行报错可在群里发错误截图求助。
关联内容¶
- 直接运用 4.4 的
ord()/chr()/hex()/int(x, base),以及 4.2 的字符串遍历、切片、拼接——是对第 4 章数据类型基础的综合练习。 for ... in预告了下一章循环控制语句的内容。- 提交方式沿用此前课程的作业流程(GitHub,细节待定)。