python下面代码是什么意思_请问这段Python代码是什么意思?

ord(p) - ord('a')

这个意思是以 'a' 为序号0,计算字符p的序号。在ASCII字符集中,小写字母a-z是连续排列的,因此如果a是0的话,那么b就是1,c就是2……以此类推。

ord(p) - ord('a') + 3

前面一段我们解释过了,那么这一段的意思就是把这个序号+3

(ord(p) - ord('a') + 3) % 26

将序号+3后的结果以26为基数取模。意思就是如果这个数超过26那么就回到0重新循环。也就是说我们让这个数字始终处于0-25的范围中。如果这个数是26,那么最终将回到0,27会变成1……以此类推。

ord('a') + ((ord(p) - ord('a') + 3) % 26)

通过后面的一串运算,我们得到了英文字母在字母表所在序号的后三个序号。比如,原字母是b,那么它的原始序号是1,经过运算之后得到4。原字母是x,原始序号是23,经过运算之后得到0。y会得到1。等等。

然后把这个序号再加上'a'字母的字符集编码,就得到了这个字母的真正字符集编码。

这里稍微提一下字符集的概念。我们知道计算机是通过0和1形成的二进制来进行数据的表示和运算的。0和1很显然只能表示数字。如果我们要处理文字、图像、视频之类的非数字信息,就需要找到一种方法将它们的信息和数字对应起来,也就是所谓的“数字化”。对于文字,尤其是计算机诞生之初处理的英文信息,我们提供了一种约定,将每一个英文字母和一些符号分配一个数字。以后我们看到这个数字就知道它对应的字符是啥了。ASCII字符集就是早期比较流行的一种通用约定。在这种约定中,'a'对应的数字是97,'b'对应的数字是98……以此类推。反过来说,如果我们从某个地方读到了一个数字97,并且我们知道我们在读取一个字符,我们就知道它是字符'a',等等。

现在更流行的字符集是基于UNICODE的UTF-8编码字符集。这个字符集能表示更多的字符,包括中文。其中的英文部分,跟ASCII字符集几乎是完全兼容的。

上面那段代码,实际上就是计算出移位之后的新字符的字符集编码。

最后我们通过 chr 函数,告知系统这实际上是一个字符。那么print函数就会把编码对应的字符打印出来。

那么综合一下,这行代码的实际意思就是打印原字符后移三个字母之后的新字母(如果序号超过'z'则回到字母表开头进行循环)。这其实也就是凯撒加密算法的核心了。

举个例子来说。

hello, worldz 这个字符串,经过处理之后,打印出的应该是:khoor,zrougc

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值