字符、ord 与 chr 技巧
在字母与数字之间转换
字符、ord 与 chr 技巧 是 CoddyKit 上的免费 Competitive Programming Academy 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Competitive Programming Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Competitive Programming Academy 课程共包含 4 节课。
字母也是数字
程序读取的每个字符在底层都会以数字形式存储。了解码点后,您就可以对字母进行数学运算。🔢
认识 ord()
ord() 函数会将单个字符转换为对应的整数码点。它是从字母进入算术运算的桥梁。
print(ord('A')) # 65
print(ord('a')) # 97认识 chr()
chr() 函数的作用相反:给它一个数字,它会返回对应的字符。二者结合起来就能完成清晰的双向转换。
print(chr(65)) # 'A'
print(chr(97)) # 'a'字母是连续排列的
关键技巧是:a 到 z 的码点连续排列,A 到 Z 也是如此。因此,您可以通过简单的减法为字母建立索引。
将字母映射到 0-25
减去基准字母,就能得到整洁的从 0 开始的索引。这样可以将字母转换为数组位置,用于计数。
idx = ord('c') - ord('a')
print(idx) # 2将索引转换回字母
反过来,只需将索引加到基准值上,再调用 chr()。这样位置 0 就变成 'a',位置 25 就变成 'z'。
ch = chr(ord('a') + 2)
print(ch) # 'c'移动字母(凯撒密码)
要将字母向前移动,请先加上偏移量,再对 26 取模。这是凯撒密码问题的核心。
shifted = chr((ord('y') - ord('a') + 3) % 26 + ord('a'))
print(shifted) # 'b'大写和小写相差 32
由于字符编码的排列方式,每个大写字母的码点都恰好比对应的小写字母小 32。如果需要,您可以完全通过算术运算转换大小写。
print(ord('a') - ord('A')) # 32数字也是字符
字符 '7' 并不是数字 7。请减去 ord('0'),将数字字符转换为真正的数值。
d = ord('7') - ord('0')
print(d) # 7快速检查字母
对于是或否的检查,使用 isalpha() 和 isdigit() 之类的方法,比手动比较码点更加简洁。
print('x'.isalpha()) # True
print('5'.isdigit()) # True这在 CP 中为何重要
将字母映射为索引后,您可以使用一个很小的包含 26 个位置的数组,而不必使用字典。这种方式速度更快,也是字符串问题中的常用技巧。
快速检查
下面是一个关于字母运算的小问题。
回顾
您已经学会使用 ord 和 chr 在字母与数字之间转换,也了解了连续码点如何让您通过简单的数学运算为字符建立索引、移动字符并进行检查。🎉
常见问题解答
「字符、ord 与 chr 技巧」课时是免费的吗?
是的 — 「字符、ord 与 chr 技巧」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Competitive Programming Academy 课程的其余内容,请升级到 CoddyKit PRO。 Competitive Programming Academy 课程共包含 4 节课。
「字符、ord 与 chr 技巧」这节课中我会学到什么?
在字母与数字之间转换 你通过在浏览器中直接运行的动手代码来练习 Competitive Programming Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Competitive Programming Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Competitive Programming Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。
「字符、ord 与 chr 技巧」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Competitive Programming Academy 课中编写并运行代码吗?
能。每节 Competitive Programming Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 字符、ord 与 chr 技巧
- 使用频率表统计字母
- 正确检查回文
- 拆分、去除空白并重新连接单词