PythonChallenge 挑战之路 Level-27

这一关没整出来,看了攻略才知道要利用调色板神马的……

首先下载zigzag.gif,这时候每个像素的上的信息是调色板的索引号。然后就需要用实际的颜色替换索引号得到等价的图片信息:

import Image,string,bz2,keyword
f = Image.open('zigzag.gif')
fd = f.tostring()
fp = f.palette.getdata()[1][::3]
trans = string.maketrans(''.join([chr(i) for i in range(256)]), fp)
ftran = fd.translate(trans)

其次将两块信息对比,找出不同的位置,记录上面的信息,并标记坐标位置。完成后对记录的信息解码。

diff = ['','']
img = Image.new('1',f.size,0)
for i in range(1,len(fd)):   
    if fd[i]!=ftran[i-1]:
        diff[0]+=fd[i]
        diff[1]+=ftran[i-1]
        img.putpixel(((i-1)%f.size[0],(i-1)/f.size[0]),1)
img.save('out27.png')
text = bz2.decompress(diff[0])
利用bz2解码的结果是一大段文本,而坐标位置构成的图片是:


最后就是将该文本中的python关键字提出,就可以得到最终的结果了:

for i in text.split():
    if not keyword.iskeyword(i):
        print i
结果为:

../ring/bell.html
repeat
switch
(重复的就省略了)



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值