Python-Challenge-2

第五关:
不多说什么了,点点图片就可以发现了,直接贴代码上来:

#!/usr/bin/env python

from urllib import urlopen
import re

id = 12345

while id:
        url = "http://www.pythonchallenge.com/pc/def/linkedlist.php?nothing=%s" % id
        page = urlopen(url)
        text = page.read()
        print text
        id = ''.join(re.findall('and the next nothing is ([0-9].*)',text))
        print id

中间停了一下,出来个提示“Yes. Divide by two and keep going.”,刚开始还以为是分成两组,其实是除以2然后继续,那就手动把上面的id初始化为92118/2=46059。再运行一次程序就得到下一关的地址:peak.html。

第六关:
网页的源码中有一个提示“peak hell sounds familiar ”,我读了半天也没觉得熟悉,后来作了个弊,查了一下Python的函数,发现了pickle这个函数,peak,hell连读一下就是pickle了,这都可以。把网页改为pickle.html,会提示“yes! pickle!”,看来函数是找到了。然后在源代码中找到banner.p,获得这个文件里的内容,看起来乱七八糟的一些东西,其实就是使用pickle生成对象的一个序列,可以直接保存在文件里,关于pickle这里有一个简单的介绍,我也是现学的,贴代码:

#!/usr/bin/env python

import pickle
import sys

f = file('banner.p')
p = pickle.load(f)

print p
for a in p:
        for b in a:
                x,y = b
                while y:
                        sys.stdout.write(x)
                        y=y-1
        print
f.close()

从文件中会得到一个很长的list,仔细看看又是由好多个list组成,而这些list中数字之和都为95,根据banner.p这个文件名可以想到这是个字符图片,在上面的程序中我打印出了这个图片(有一点需要注意,你得把终端可显示的字符设置为至少95,不然会提前自动折行,这样就没办法看到这个banner了):
得到下一关地址:channel.html

坚持原创技术分享,您的支持将鼓励我继续创作!