第七题地址:http://www.pythonchallenge.com/pc/def/oxygen.html
刷新了两次,一直以为网速不给力,图片加载不清楚,然后查看源代码,也没有什么有效信息,只能直接查攻略了。知道要对图片进行处理,要用到第三方库函数PIL,完全没有碰过,先熟悉一下。http://blog.csdn.net/muyuxiaozi_2013/article/details/22174421
根据其他博客说的,先使用GIMP把图片里面的黑白条切出来,下了一个GIMP,这么高大上的图片处理工具,完全不会用,直接默默的偷看别人答案,黑白条的位置是box = (0,43,609,53),直接用Python来切了。
import Image im = Image.open(r'D:\oxygen.png') box = (0,43,609,53) im = im.crop(box) pixels = im.getdata() print ('mode: %s' %im.mode) print('number of pixel: %d' % len(pixels)) print(pixels[0]) lim = im.convert('L') lpixels = lim.getdata() print ''.join(chr(lpixels[i]) for i in range(0,609,7))
得到的结果是:smart guy, you made it. the next level is [105, 110, 116, 101, 103, 114, 105, 116, 121]
然后再把这段list转成字符的形式
block = [105, 110, 116, 101, 103, 114, 105, 116, 121] print(''.join(chr(x) for x in block))
最后得到的结果是:integrity
所以,下一题的网址是:http://www.pythonchallenge.com/pc/def/integrity.html
1、间隔为7 取一个数字的原因是网上有人用GIMP观察出来,每一个黑色小方块里面有七个像素,不会用GIMP,只能直接抄了。
2、为什么要转成mode为L的形式,L是八位像素的黑白色,原本是RGBA的模式,每一个有四个变量值,用split()将三色通道分离,随便取一个通道来做转换也是可以的。