python中代码段的标志是什么车_请问这段Python代码是什么意思?
ord(p) - ord('a')
這個(gè)意思是以 'a' 為序號(hào)0,計(jì)算字符p的序號(hào)。在ASCII字符集中,小寫字母a-z是連續(xù)排列的,因此如果a是0的話,那么b就是1,c就是2……以此類推。
ord(p) - ord('a') + 3
前面一段我們解釋過了,那么這一段的意思就是把這個(gè)序號(hào)+3
(ord(p) - ord('a') + 3) % 26
將序號(hào)+3后的結(jié)果以26為基數(shù)取模。意思就是如果這個(gè)數(shù)超過26那么就回到0重新循環(huán)。也就是說我們讓這個(gè)數(shù)字始終處于0-25的范圍中。如果這個(gè)數(shù)是26,那么最終將回到0,27會(huì)變成1……以此類推。
ord('a') + ((ord(p) - ord('a') + 3) % 26)
通過后面的一串運(yùn)算,我們得到了英文字母在字母表所在序號(hào)的后三個(gè)序號(hào)。比如,原字母是b,那么它的原始序號(hào)是1,經(jīng)過運(yùn)算之后得到4。原字母是x,原始序號(hào)是23,經(jīng)過運(yùn)算之后得到0。y會(huì)得到1。等等。
然后把這個(gè)序號(hào)再加上'a'字母的字符集編碼,就得到了這個(gè)字母的真正字符集編碼。
這里稍微提一下字符集的概念。我們知道計(jì)算機(jī)是通過0和1形成的二進(jìn)制來進(jìn)行數(shù)據(jù)的表示和運(yùn)算的。0和1很顯然只能表示數(shù)字。如果我們要處理文字、圖像、視頻之類的非數(shù)字信息,就需要找到一種方法將它們的信息和數(shù)字對(duì)應(yīng)起來,也就是所謂的“數(shù)字化”。對(duì)于文字,尤其是計(jì)算機(jī)誕生之初處理的英文信息,我們提供了一種約定,將每一個(gè)英文字母和一些符號(hào)分配一個(gè)數(shù)字。以后我們看到這個(gè)數(shù)字就知道它對(duì)應(yīng)的字符是啥了。ASCII字符集就是早期比較流行的一種通用約定。在這種約定中,'a'對(duì)應(yīng)的數(shù)字是97,'b'對(duì)應(yīng)的數(shù)字是98……以此類推。反過來說,如果我們從某個(gè)地方讀到了一個(gè)數(shù)字97,并且我們知道我們?cè)谧x取一個(gè)字符,我們就知道它是字符'a',等等。
現(xiàn)在更流行的字符集是基于UNICODE的UTF-8編碼字符集。這個(gè)字符集能表示更多的字符,包括中文。其中的英文部分,跟ASCII字符集幾乎是完全兼容的。
上面那段代碼,實(shí)際上就是計(jì)算出移位之后的新字符的字符集編碼。
最后我們通過 chr 函數(shù),告知系統(tǒng)這實(shí)際上是一個(gè)字符。那么print函數(shù)就會(huì)把編碼對(duì)應(yīng)的字符打印出來。
那么綜合一下,這行代碼的實(shí)際意思就是打印原字符后移三個(gè)字母之后的新字母(如果序號(hào)超過'z'則回到字母表開頭進(jìn)行循環(huán))。這其實(shí)也就是凱撒加密算法的核心了。
舉個(gè)例子來說。
hello, worldz 這個(gè)字符串,經(jīng)過處理之后,打印出的應(yīng)該是:khoor,zrougc
總結(jié)
以上是生活随笔為你收集整理的python中代码段的标志是什么车_请问这段Python代码是什么意思?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 调制方式相关总结
- 下一篇: 黑马C++设计模式2