转眼间又一个月没有逛博客园,明显的感觉到自己的代码能力变弱,前两周搞项目去了,只是形式上面的答辩而已,并没有涉及到代码层面,也就玩了一下验证码,没有识别玩出校器网页的验证码;转眼间又是各种考试,所幸,考试进入尾声,今天可以玩玩pythonchanllenge,一周没继续闯关,明显感觉到自己的智商余额不足,直接上题:

http://www.pythonchallenge.com/pc/def/oxygen.html

  进入这个题目,只有一张图片,源码里面的信息只给了网页的title是"smarty",图片的名字叫氧气——“oxygen.png”。那么只能在图片里面找信息,图片的内容是一条河,河边是草木,值得注意的是,图片中间有一段灰色区域,初步估计信息隐藏在这个马赛克区域内。

  首先,利用画图工具可得出该图片的像素是:629*95,再将这段马赛克区域的坐标提取出来:

横坐标的范围是:0-609,纵坐标的范围是:43-53。

  其次,利用python的Image模块得到里面的像素列表:

 from PIL import Image

 def ques_7(img):
data = [img.getpixel((i, j)) for i in range(0, 609) for j in range(43, 53)] # 横坐标在0-609中变动,纵坐标在43-53内变动
print data png = Image.open("C:\\Users\\wing1995\\Desktop\\oxygen.png", 'r')
ques_7(png)

  输出结果如下:

[(115, 115, 115, 255), (115, 115, 115, 255), (115, 115, 115, 255), (115, 115, 115, 255), (115, 115, 115, 255), (115, 115, 115, 255), (115, 115, 115, 255), (115, 115, 115, 255), (115, 115, 115, 255), (98, 127, 47, 255)................

  根据上述结果可知,输出的像素是一个有着4个元素的元祖列表,其中每个元组里面的第四个元素都是255,并且每个元祖重复7次,那么如何将这些输出结果与答案联系?一般情况,答案的链接都是英文字母,那么可以尝试使用函数`chr`把这些ASCII码转换为字母。

  第二次改进的代码

 def ques_7(img):
data = [chr(img.getpixel((i, j))[0]) for i in range(0, 609, 7) for j in range(43, 53, 7)] # 横坐标在0-609中变动,纵坐标在43-53内变动
print ''.join(data)

输出结果如下:

ssmmaarrtt  gguuyy,,  yyoouu  mmaaddee  iitt..  tthhee  nneexxtt  lleevveell  iiss  [[110055,,  111100,,  111166,,  110011,,  110033,,  111144,,  110055,,  111166,,  112211]]

嘿嘿,很明显,除去重复的字母,最后的样子显现出来。

smart guy, you made it. the next level is [105, 110, 116, 101, 103, 114, 105, 116, 121]

那么,数据就是列表[105, 110, 116, 101, 103, 114, 105, 116, 121]隐含的信息,继续将该数组中的数转化为字母,得到的单词为:integrity。

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

pythonchallenge(七)的更多相关文章

  1. pythonchallenge(二)

    PythonChallenge_2 一.实验说明 1. 环境登录 无需密码自动登录,系统用户名shiyanlou,密码shiyanlou 2. 环境介绍 本实验环境采用带桌面的Ubuntu Linux ...

  2. pythonchallenge(三)

    PythonChallenge_3 一.实验说明 1. 环境登录 无需密码自动登录,系统用户名shiyanlou,密码shiyanlou 2. 环境介绍 本实验环境采用带桌面的Ubuntu Linux ...

  3. Python Challenge 第七关

    第七关,只有一张图片,右键源代码也什么都没有,只是这图片上有一行类似马赛克一样的部分.看来答案只有在这张图上找了.下载了图片,去网上搜一下有什么库可以处理图像.搜到了一个PIL,发现安装的python ...

  4. 如何一步一步用DDD设计一个电商网站(七)—— 实现售价上下文

    阅读目录 前言 明确业务细节 建模 实现 结语 一.前言 上一篇我们已经确立的购买上下文和销售上下文的交互方式,传送门在此:http://www.cnblogs.com/Zachary-Fan/p/D ...

  5. CRL快速开发框架系列教程七(使用事务)

    本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...

  6. 《LoadRunner12七天速成宝典》来了

    看到自己的新书又要发行了,算算从09年第一本书开始,不知不觉已经是第四本书了(帮朋友合写的书不算),每次写完之后都会说太累了,不想再写了,但是却又次次反悔,吞下食言的苦果.如果非要说第四本书的感受,那 ...

  7. 【SAP业务模式】之ICS(七):IDOC配置

    这是ICS业务模式系列的最后一篇了,主要讲解IDOC的配置. 一.指定EDI传输的供应商逻辑地址 事务代码:WEL1 注意:上面逻辑地址是生产公司+内部客户.有以下两种情形: 1.如果内部客户都是纯数 ...

  8. 我的MYSQL学习心得(七) 查询

    我的MYSQL学习心得(七) 查询 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类 ...

  9. Nodejs之MEAN栈开发(七)---- 用Angular创建单页应用(下)

    上一节我们走通了基本的SPA基础结构,这一节会更彻底的将后端的视图.路由.控制器全部移到前端.篇幅比较长,主要分页面改造.使用AngularUI两大部分以及一些优化路由.使用Angular的其他指令的 ...

随机推荐

  1. C# 时间戳与DateTime间的互相转换

    //DateTime转换为时间戳public long GetTimeSpan(DateTime time) { DateTime startTime = TimeZone.CurrentTimeZo ...

  2. MvvmLight框架使用入门(三)

    本篇是MvvmLight框架使用入门的第三篇.从本篇开始,所有代码将通过Windows 10的Universal App来演示.我们将创建一个Universal App并应用MvvmLight框架. ...

  3. 关于Mysql数据库进行多表查询时设计编程思想

    SQL代码:

  4. java中-的流-与操作

    /* 字节输出流  OutputStrema:     * OutputStream抽象类     * write(int b); 将指定的字节写入此流中     * write(byte[] b); ...

  5. C语言 从头学起了

    1,我用的是VC6.0++编译器 具体安装使用教程 去网上找 2,刚写hello world时候 就遇到一个坑. #网上 hello world 代码 #include<stdio.h> ...

  6. [译文]casperjs的API-mouse模块

    mouse类 这个类是对各种鼠标操作的抽象,比如移动,点击,双击,滚动等.它要求一个已经获得DOM属性的casper对象,能用这种方式创造一个鼠标对象: var casper = require(&q ...

  7. ES6之新增set数据结构

    学习set set是ES6中的新增的数据结构,是一种构造函数,类似于数组,但是里面的元素都是唯一的,不重复的. 例如: const set = new Set(); [1,2,3,4,5,2,1,2, ...

  8. python 全栈开发:str(字符串)常用方法操作 、for 有限循环以及if 循环

    str(字符串)常用方法操作: 首字母大写: s = 'mylovepython' s1 = s.capitalize() print(s1) 输出: Mylovepython 单行多字符串首字母大写 ...

  9. 大数据-HBase HA集群搭建

    1.下载对应版本的Hbase,在我们搭建的集群环境中选用的是hbase-1.4.6 将下载完成的hbase压缩包放到对应的目录下,此处我们的目录为/opt/workspace/ 2.对已经有的压缩包进 ...

  10. 【第2次会议记录_2018.5.27】—— [ 算法原理 ]:手工特征提取的概念问题。(by_wanghao)

    1.提取 特征点 .特征描述子 与 提取特征向量 之间的区别: (1).特征点:指的是一张图片上比较有代表性的‘位置’,提取特征点就是把图片中这些有代表性的位置给标出来. (2).特征描述子:当提取出 ...