如果您打开Python解释器,并输入"import this",如您所知,它会打印:
Tim Peters的Python之禅
美丽胜过丑陋.
显式优于隐式.
简单比复杂更好.
复杂比复杂更好.
Flat优于嵌套.
稀疏优于密集.
可读性很重要.
特殊情况不足以打破规则.
虽然实用性胜过纯洁.
错误不应该默默地传递.
除非明确沉默.
面对模棱两可,拒绝猜测的诱惑.
应该有一个 - 最好只有一个 - 明显的方法来做到这一点.
虽然这种方式起初可能并不明显,除非你是荷兰人.
现在比永远好.
虽然从未往往比好正确的现在.
如果实施很难解释,这是一个坏主意.
如果实现很容易解释,那可能是个好主意.
命名空间是一个很棒的主意 - 让我们做更多的事情吧!
在python源代码(Lib/this.py)中,这个文本是由一段奇怪的代码生成的:
s = """Gur Mra bs Clguba, ol Gvz Crgref
Ornhgvshy vf orggre guna htyl.
Rkcyvpvg vf orggre guna vzcyvpvg.
Fvzcyr vf orggre guna pbzcyrk.
Pbzcyrk vf orggre guna pbzcyvpngrq.
Syng vf orggre guna arfgrq.
Fcnefr vf orggre guna qrafr.
Ernqnovyvgl pbhagf.
Fcrpvny pnfrf nera'g fcrpvny rabhtu gb oernx gur ehyrf.
Nygubhtu cenpgvpnyvgl orngf chevgl.
Reebef fubhyq arire cnff fvyragyl.
Hayrff rkcyvpvgyl fvyraprq.
Va gur snpr bs nzovthvgl, ershfr gur grzcgngvba gb thrff.
Gurer fubhyq or bar-- naq cersrenoyl bayl bar --boivbhf jnl gb qb vg.
Nygubhtu gung jnl znl abg or boivbhf ng svefg hayrff lbh'er Qhgpu.
Abj vf orggre guna arire.
Nygubhtu arire vf bsgra orggre guna *evtug* abj.
Vs gur vzcyrzragngvba vf uneq gb rkcynva, vg'f n onq vqrn.
Vs gur vzcyrzragngvba vf rnfl gb rkcynva, vg znl or n tbbq vqrn.
Anzrfcnprf ner bar ubaxvat terng vqrn -- yrg'f qb zber bs gubfr!"""
d = {}
for c in (65, 97):
for i in range(26):
d[chr(i+c)] = chr((i+13) % 26 + c)
print "".join([d.get(c, c) for c in s])
Run Code Online (Sandbox Code Playgroud)
Eli*_*sky 166
这称为rot13编码:
d = {}
for c in (65, 97):
for i in range(26):
d[chr(i+c)] = chr((i+13) % 26 + c)
Run Code Online (Sandbox Code Playgroud)
构建转换表,大写(这是65用于)和小写(这是97用于)chars.
print "".join([d.get(c, c) for c in s])
Run Code Online (Sandbox Code Playgroud)
打印翻译的字符串.
ype*_*eᵀᴹ 23
如果你想手工或者在你的头脑中进行ROT13替换,你可以检查一下,因为13*2 = 26(英文字母的字母数),它本质上是一个交换:
a <-> n
b <-> o
c <-> p
...
m <-> z
A <-> N
B <-> O
C <-> P
...
M <-> Z
Run Code Online (Sandbox Code Playgroud)
Vs lbh cenpgvfr ybat rabhtu,lbh'yy riraghnyyl znfgre gur Mra bs EBG-13 nytbevguz naq ernq guvf Xyvatba ybbxvat grkgf jvgubhg pbzchgre uryc.
小智 6
它使用ROT13编码.使用它是因为它是一个笑话.
您还可以使用Python函数来解码字符串.
仅限Python 2:
import this
print(this.s.decode('rot13'))
Run Code Online (Sandbox Code Playgroud)
Python 2&3:
import codecs
print(codecs.decode(this.s, 'rot-13'))
Run Code Online (Sandbox Code Playgroud)