PythonChallenge Mission 1

欣喜地正式开始PythonChallenge

第一关http://www.pythonchallenge.com/pc/def/map.html

发现有一张图


然后下面又给了一串不知所云的文字:

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.

注意图片的名字叫map,这不是一种典型的映射结构嘛?难道要我们做译码员,把k、o、e分别译为m、q、g?

注意到python中有一个字符串库string,它为我们提供以下两个方便字符替换的方法

(1)string.maketrans(from,to):from和to是len相同的两个字符串,根据它们制作一个替换表,把from中的字符分别替换为to中位置相应的字符

(2)string.translate(self,table,deletechars):首先删除string中含有的deletechars字符,然后将字符串string按照table表(通过上一步制作)方式替换并返回结果。

原理知道了,我们开始于是我们take action了!

import string
s="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."
table=string.maketrans("koe","mqg")
print s.translate(table)
print "map".translate(table)


然而结果令人upset:

g fmnc wms bgblr rpylqjyrc gr zw fylb. rfyrq ufyr ammnsrcpq ypc dmp. bmglg gr gl zw fylb gq glcddgagclr ylb rfyr'q ufw rfgq rcvr gq qm jmlg. sqglg qrpglg.myicrpylq() gq pcammmclbcb. lmu ynnjw ml rfc spj.

这是个啥。。。感觉思路方向还是对的,于是重新看替换表,发现m、q、g不就是把k、o、e向后移动了两位吗?于是猜测是把26个英文字母按循环队列的方式向后平移两位,于是take action again:

将table换为如下:

table=string.maketrans("abcdefghijklmnopqrstuvwxyz",'cdefghijklmnopqrstuvwxyzab')
结果终于是喜闻乐见的形式了:

i hope you didnt translate it by hand. thats what computers are for. doing it in by hand is inefficient and that's why this text is so long. using string.maketrans() is recommended. now apply on the url.

按照翻译结果,将这个translate table 应用到url上

print "map".translate(table)
就得到了结果:ocr

所以下一关的网址为:http://www.pythonchallenge.com/pc/def/ocr.html









评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值