[python] “this”모듈의 소스 코드는 무엇입니까?

파이썬 인터프리터를 열고 “import this”를 입력하면 다음과 같이 인쇄됩니다.

Tim Peters의 Python Zen

못생긴 것보다 아름답습니다.
암시적인 것보다 명시적인 것이 좋습니다.
단순보다 복잡합니다.
복잡한 것이 복잡한 것보다 낫습니다.
평평한 것이 중첩보다 낫습니다.
스파 스가 밀도보다 낫습니다.
가독성이 중요합니다.
특별한 경우는 규칙을 어길만큼 특별하지 않습니다.
실용성은 순도를 능가하지만.
오류가 자동으로 전달되지 않아야합니다.
명시 적으로 침묵하지 않는 한.
모호함에 직면하여 추측하려는 유혹을 거부하십시오.
그것을하는 명백한 방법이 있어야합니다.
네덜란드 인이 아니라면 처음에는 그 방법이 명확하지 않을 수 있습니다.
지금보다 결코 낫습니다. 바로 지금
결코 결코 낫지 않지만
구현이 설명하기 어렵다면 나쁜 생각입니다.
구현이 설명하기 쉬운 경우 좋은 생각 일 수 있습니다.
네임 스페이스는 훌륭한 아이디어 중 하나입니다. 더 많은 것을 해보자!

파이썬 소스 (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])



답변

이것을 rot13 인코딩 이라고합니다 .

d = {}
for c in (65, 97):
    for i in range(26):
        d[chr(i+c)] = chr((i+13) % 26 + c)

대문자 (이것이 65 인 것)와 소문자 (이것이 97 인 것) 모두의 문자에 대한 변환 표를 작성합니다.

print "".join([d.get(c, c) for c in s])

번역 된 문자열을 인쇄합니다.


답변

ROT13 을 손으로 또는 머리로 바꾸 려면 13 * 2 = 26 (영어 알파벳 글자 수)이기 때문에 본질적으로 교환입니다.

a <-> n
b <-> o
c <-> p
...
m <-> z

A <-> N
B <-> O
C <-> P
...
M <-> Z 

Vs lbh cenpgvfr ybat rabhtu, lbh’yy riraghnyyl znfgre gur Mra bs EBG-13 nytbevguz naq ernq guvf Xyvatba ybbxvat grkgf jvgubhg pbzchgre uryc.


답변

대체 암호 인 rot13 입니다.


답변

ROT13 인코딩을 사용합니다 . 이것은 농담이기 때문에 사용됩니다.

파이썬 함수를 사용하여 문자열을 디코딩 할 수도 있습니다.

파이썬 2 만 :

import this
print(this.s.decode('rot13'))

파이썬 2 & 3 :

import codecs
print(codecs.decode(this.s, 'rot-13'))


답변

(이전 답변에서 언급했듯이) 대체 암호입니다. 역사적으로 Caesar 암호 입니다.

https://www.google.de/search?q=caesar+cipher&cad=h


답변