Se você abrir um interpretador Python e digitar "import this", como você sabe, ele imprimirá:
O Zen de Python, de Tim Peters
Bonito é melhor que feio.
Explícito é melhor que implícito.
Simples é melhor que complexo.
Complexo é melhor que complicado.
Flat é melhor que aninhado.
Esparso é melhor que denso.
Legibilidade conta.
Casos especiais não são especiais o suficiente para violar as regras.
Embora praticidade supere a pureza.
Os erros nunca devem passar silenciosamente.
A menos que seja explicitamente silenciado.
Diante da ambiguidade, recuse a tentação de adivinhar.
Deve haver uma - e preferencialmente apenas uma - maneira óbvia de fazê-lo.
Embora esse caminho possa não ser óbvio a princípio, a menos que você seja holandês.
Agora é melhor do que nunca.
Embora nunca seja frequentemente melhor do queagora mesmo .
Se a implementação é difícil de explicar, é uma má ideia.
Se a implementação é fácil de explicar, pode ser uma boa ideia.
Os espaços para nome são uma ótima idéia - vamos fazer mais!
No código-fonte python (Lib / this.py), este texto é gerado por um curioso trecho de código:
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])
import codecs; print(codecs.decode(s, "rot-13"))
. Escrever o algoritmo à mão dessa maneira foi apenas mais uma ofuscação do ovo da páscoa.'Gur Mra bs Clguba, ol Gvz Crgref'.decode('rot13')
.this
também faz parte da piada, porque outras linguagens (por exemplo, Java) usamthis
similar à maneira como Python usaself
. Digitarimport this
parece tão inútil quanto digitarimport java.self;
.Se você deseja fazer a substituição do ROT13 manualmente - ou na sua cabeça -, pode verificar que, porque 13 * 2 = 26 (o número das letras do alfabeto inglês), é essencialmente uma troca:
Vs.
fonte
É uma cifra de substituição, rot13 .
fonte
Ele usa ROT13 codificação . Isso é usado porque é uma piada.
Você também pode usar funções Python para decodificar string.
Apenas Python 2:
Python 2 e 3:
fonte
import codecs
. Não sei se a importação de codecs ainda é necessária ou se a disponibilidade dedecode
foi feita automaticamente com alguma versão específica do Python. Você poderia criar um link para a documentaçãodecode
que está usando?import this
e imprimirá diretamente, sem nenhum código adicional.É uma cifra de substituição (como mencionado nas respostas anteriores). Historicamente falando, é a cifra de César .
https://www.google.de/search?q=caesar+cipher&cad=h
fonte