收錄於話題#Python挑戰6個html
有這麼一個網站「http://www.pythonchallenge.com/」,裏面有33個使用python去完成的挑戰,經過這些挑戰能夠令咱們更熟悉python。今天咱們來挑戰第2關。第2關網址:http://www.pythonchallenge.com/pc/def/map.htmlpython
先來看下圖片和下面的文字。圖片裏有一本筆記本,上面寫着「K→M、O→Q、E→G」。圖片下面的黃色英文意思是「每個人解決這題以前會思考兩次」。最下面的紫色英文則是一串亂七八糟的字母。
ide
看到這些,首先想到的是以前的Python之禪,經過字母的ascii碼的偏移量去解出最終的句子。而圖中的M是K的後面第二個字母,Q和G也是一樣的規律,因此能夠試試這個方法(代碼來源於Python之禪裏提到的this.py)。網站
#把句子賦值給變量ss = "g fmnc wms bgblr rpylqjyrc gr zw fylb. rfyrq ufyr amknsrcpq ypc dmp. bmgle gr gl zw fylb gq glcddgagclr ylb rfyr'q ufw rfgq rcvr gq qm jmle. sqgle qrpgle.kyicrpylq() gq pcamkkclbcb. lmu ynnjw ml rfc spj."
d = {}
for c in (65, 97): for i in range(26): d[chr(i+c)] = chr((i+2) % 26 + c)
print(''.join([d.get(c, c) for c in s]))
獲得的結果是這樣的。this
意思是「我但願你不是用手翻譯它的,這就是計算機用處。用手翻譯它是很是低效率的因此這句話會這麼長。推薦使用string.maketrans()。如今用在url上。」。url
在網上查了一下string.maketrans()的用法。(下圖來自菜鳥教程)spa
通過屢次試驗,原來是把url中的「map」翻譯一下。。。翻譯
把「map」換成「ocr」就能夠進入下一關了。
3d