第 5 关

挑战地址,点我

问题


pronounce it

分析

页面干干净净,没有任何信息,我们右键查看网页源代码看一下。

<peakhell src="banner.p"/>
</body>
</html><!-- peak hell sounds familiar ? -->

这里有一段提示 peak hell sounds familiar ? peak hell 和什么的发音相似?
我们还看到有个 peakhell 标签,里面有个 banner.p,我们打开看下是一堆不规则的文本。

其实 python 中有个 pickle 模块,用来进行对象的序列化和反序列化。

我们尝试把 banner.p 中的内容反序列化试下:

import urllib.request
import pickleurl = "http://www.pythonchallenge.com/pc/def/banner.p"with urllib.request.urlopen(url) as f:print(pickle.load(f))

输出内容:

[[(' ', 95)], [(' ', 14), ('#', 5), (' ', 70), ('#', 5), (' ', 1)], ...省略

可以发现反序列化后,这是一个二维数组,我们把输出的格式调整一下:

import urllib.request
import pickleurl = "http://www.pythonchallenge.com/pc/def/banner.p"with urllib.request.urlopen(url) as f:result = pickle.load(f)for r in result:print(r)

输出内容:

[(' ', 95)]
[(' ', 14), ('#', 5), (' ', 70), ('#', 5), (' ', 1)]
[(' ', 15), ('#', 4), (' ', 71), ('#', 4), (' ', 1)]
...省略

感觉毫无头绪… 仔细找下规律,发现每一行的数字之和都是 95,而且里面每一个元组由两部分组成,一个字符(空格或者#),一个数字,比如:(’ ‘, 14), (’#’, 5)。可以联想一下,这是一个矩阵,元组中的数字代表前面的字符重复次数,每一行都有95个字符。我们按照这个猜想试一下,看看会有什么效果。

import urllib.request
import pickleurl = "http://www.pythonchallenge.com/pc/def/banner.p"with urllib.request.urlopen(url) as f:result = pickle.load(f)for r in result:for c in r:for i in range(c[1]):print(c[0], end="")print()

输出内容:

              #####                                                                      #########                                                                       ########                                                                       ########                                                                       ########                                                                       ########                                                                       ########                                                                       ########                                                                       #######      ####   ###         ###       #####   ###    #####   ###          ###       #######   ##    #### #######     ##  ###      #### #######   #### #######     ###  ###     #######     ###  #####    ####   ###   ####    #####    ####  #####    ####   ###     ###   #######           ####     ####   ###    ###    ####     ####  ####     ####  ###      ####  #######           ####     ####          ###    ####     ####  ####     ####  ###       ###  ####
####           ####     ####     ##   ###    ####     ####  ####     #### ####       ###  ####
####           ####     ####   ##########    ####     ####  ####     #### ##############  ####
####           ####     ####  ###    ####    ####     ####  ####     #### ####            ####
####           ####     #### ####     ###    ####     ####  ####     #### ####            #######           ####     #### ####     ###    ####     ####  ####     ####  ###            #######      ##  ####     ####  ###    ####    ####     ####  ####     ####   ###      ##   #######    ##   ####     ####   ###########   ####     ####  ####     ####    ###    ##    #######     ######    #####    ##    #### ######    ###########    #####      ###      ######

这些空格和#最终组成了一个单词 channel,这应该就是下一关的入口了http://www.pythonchallenge.com/pc/def/channel.html。

参考资源:

  1. 官方文档pickle模块

[Python Challenge通关]第5关 peak hell相关推荐

  1. odd在python_[Python Challenge通关]第11关 odd even

    cave 挑战地址,点我 分析 页面上是一张模糊的图片,提示信息只有这一关的主题 odd even. 仔细看图片,上面有一些重影,考虑应该是需要分离出奇数和偶数像素. 奇数和偶数像素怎么定义?现在有两 ...

  2. [Python Challenge通关]第12关 dealing evil

    挑战地址,点我 分析 页面上的图片像有明显的行间隔,安装上一关的方法尝试分割,没有什么结果. 搜索了一下,图片的主题是分牌,当前图片的 url 是 http://www.pythonchallenge ...

  3. python第七关_[Python Challenge通关]第7关 smarty

    挑战地址,点我 分析 图片中间有一条灰色带,就像打了马赛克,右键查看网页源代码也没有任何提示信息. 那应该需要处理这条灰色的马赛克了,python 标准库中并没有处理图片的,需要用到第三方图像处理模块 ...

  4. Python Challenge -mission12 第12关dealing evil

    http://www.pythonchallenge.com/pc/return/evil.html 刚进入就一个大大的登陆框整懵逼了,呵呵,试试了之前解密的 huge file,一次性进入,看来以后 ...

  5. Python Challenge全解(持续更新中)

    有趣的Python Challenge编程游戏闯关攻略一(0-4关) 有趣的Python Challenge编程解谜游戏攻略二(5-9关) 有趣的Python Challenge编程解谜游戏第10关 ...

  6. python challenge 0-6关 攻略

    在逛北邮人论坛python版时看到暖神推荐的python challenge这个编程通关小游戏,挺有意思的,还能用来练python.一直觉的自己会的太少,但是又不知道该从哪补起,该看些什么.这个编程小 ...

  7. 有趣的Python Challenge编程解谜游戏攻略二(5-9关)

    **有趣的Python Challenge编程解谜游戏攻略二(5-9关)** 介绍 游戏介绍 0-4关攻略 写在前面 关卡 第5关 第6关 第7关 第8关 第9关 链接总结 第10关预告 介绍 游戏介 ...

  8. Python Challenge 第 2 关攻略:ocr

    Python Challenge 第 2 关攻略:ocr 题目地址 http://www.pythonchallenge.com/pc/def/ocr.html 题目内容 recognize the ...

  9. (转)一个古老的编程游戏:Python Challenge全通攻略

    为什么80%的码农都做不了架构师?>>>    Python Challenge是一个网页闯关游戏,通过一些提示找出下一关的网页地址.与众不同的是,它是专门为程序员设计的,因为大多数 ...

最新文章

  1. 完善的仿京东电商开源项目
  2. 多路隔离输出的车载辅助电源设计
  3. python单例_python 单例模式
  4. java中的jsonjar_java中使用json之相关jar包介绍
  5. 核心频率个加速频率_仅少数Ryzen 9 3900X能摸到官方最大加速频率,其他处理器也有这问题...
  6. 可变形卷积神经网络 | Deformable Network
  7. apache开源项目--HttpComponents
  8. oracle 10g for linux
  9. 避免uicollection view被错误的移动
  10. three 查看版本号
  11. CSDN 勤学会 —— 和优秀的人一起学习进步
  12. 怎么设置日程提醒时间
  13. 如何进行英文文献检索
  14. 【LeetCode学习计划】《算法-入门-C++》第13天 位运算
  15. 数据治理之主数据管理MDM
  16. 自制MyEclipse豆沙绿主题
  17. 【用matplotlib,wordcloud和pyecharts分析三国的分词,词频,词性,小说人物出场次数排序小说人物关系】
  18. 面向2018年的设计趋势
  19. 0019-python学习笔记:竞技模型
  20. 了解RAC(ReactiveCocoa)

热门文章

  1. 哈佛梅森学者邹传伟:泡沫与机遇——数字加密货币和区块链金融九问
  2. 2011初入游戏之道
  3. 熹妃q传服务器维修多久,熹妃q传体力多久恢复 熹妃q传体力用不完及怎么获得...
  4. 新媒体文章怎么写,新媒体写作注意事项!
  5. 谈谈Oracle日志文件的INVALID状态(上)
  6. 广州市博士后研究员系列职称评审及认定
  7. 小妞会装机 -- 一个装机软件的开发笔记(六)
  8. NOIP(CSP-J)信息学奥赛_普及组第八课--“一分为N看问题“
  9. python实现删除重复文件
  10. 静则一念不生,动则万善相随