Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python3
- """
- Desvelando el huevo de pascua en Python
- =========================================
- Sí importamos el módulo 'this.py', ruta (en Python 3.8.5) :
- /usr/lib/python3.8/this.py
- >>> import this # IDLE v 3.8.5 | Released on 2020-06-30
- Nos imprime < The Zen of Python, by Tim Peters ... >
- Ahora bien, si abrimos el módulo 'this.py' en IDLE usando el menú:
- File --> Open 'ruta'
- Obsevamos que la variable < 's' > contiene texto con una estructura
- similar a la estructura del texto que imprime el módulo 'this.py',
- pero parecen líneas de texto ininteligibles ...
- Además, encontramos este código:
- 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]))
- que nos "traduce" la variable < 's' > a líneas de texto coherente en
- el idioma inglés.
- Para entender cómo opera este código vamos por partes:
- d = {} # Se crea un diccionario vacío que contendrá
- # parejas 'clave --> valor'
- un bucle 'for' con un rango de caracteres (65 a 97 no incluído)
- donde < 'c' > representa un carácter
- el siguiente bucle 'for' crea una tabla de equivalencia para
- < 'c' >, de manera que el carácter 'A' equivalga a 'N' y así
- sucesivamente en el rango solicitado.
- Podemos ver la tabla de equivalencias de dos formas en IDLE, o en su
- IDE favorita:
- 1. Dado que 'd' es un diccionario
- >>> L = [d] # Generamos una lista 'L'
- >>> L.sort() # Ordenamos la lista 'L'
- >>> L # Se imprime la lista 'L'
- 2. Utilizando un bucle 'for' para ver las parejas 'clave --> valor'
- del diccionario 'd'
- >>> for i in d:
- print("clave --> Valor : {0:^3} --> {1:^3}".format(i, d[i]))
- De la tabla de equivalencias podemos inferir que la variable < 's' > ha
- sido el resultado de una transformación similar.
- Sí quiere experimentar creando tablas de equivalencia con textos que
- incluyan caracteres como 'Ñ' o 'ñ' recuerde ampliar el rango, porque:
- Recuerde:
- chr(209) --> 'Ñ'
- chr(241) --> 'ñ'
- ======================================================================
- Tomando nota de la seguda línea del 'Zen of Python'
- < Explicit is better than implicit. >
- Ahora vamos a transcribir el módulo 'this.py' para el análisis
- ======================================================================
- """
- 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]), '\n')
- print('La interesante variable < s > : \n' + chr(61)*32, '\n')
- print(s, '\n')
- print('La Tabla de equivalencias (método lista "L"), < d > : \n' +
- chr(61)*52, '\n')
- L = [d]
- L.sort()
- print(L, '\n')
- print('La Tabla de equivalencias (método clave : valor), < d > : \n' +
- chr(61)*56, '\n')
- for i in d:
- print("clave --> Valor : {0:^3} --> {1:^3}".format(i, d[i]))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement