清风竹林

ぷ雪飘绛梅映残红
   ぷ花舞霜飞映苍松
     ----- Do more,suffer less

Python Challenge lv5: peak hell

 题目链接: http://www.pythonchallenge.com/pc/def/peak.html
 这是反序列化的一道题pickle,页面源码中的banner.p的字样, 为序列化文件地址。但解析的结果并不是最终的答案,花了半天时间终于弄明白结果是一个用‘#’字组成的图形,呜呼: 程序输出:

import pickle
import urllib.request

if __name__ == '__main__':
    url 
= 'http://www.pythonchallenge.com/pc/def/banner.p'
    request
= urllib.request.Request(url)
    
# my pc must use proxy to connect
    request.set_proxy('172.16.0.252:80''http')
    
    
try:        
        response
= urllib.request.urlopen(request)
        banner
= pickle.load(response)
        response.close()
        
        
for line in banner:
            
print(''.join(map(lambda x: x[0]* x[1], line)))
              
    
except Exception as ex:
        
print(ex)

程序输出:

                                                                                              
              #####                                                                      #####
               ####                                                                       ####
               ####                                                                       ####
               ####                                                                       ####
               ####                                                                       ####
               ####                                                                       ####
               ####                                                                       ####
               ####                                                                       ####
      ###      ####   ###         ###       #####   ###    #####   ###          ###       ####
   ###   ##    #### #######     ##  ###      #### #######   #### #######     ###  ###     ####
  ###     ###  #####    ####   ###   ####    #####    ####  #####    ####   ###     ###   ####
 ###           ####     ####   ###    ###    ####     ####  ####     ####  ###      ####  ####
 ###           ####     ####          ###    ####     ####  ####     ####  ###       ###  ####
####           ####     ####     ##   ###    ####     ####  ####     #### ####       ###  ####
####           ####     ####   ##########    ####     ####  ####     #### ##############  ####
####           ####     ####  ###    ####    ####     ####  ####     #### ####            ####
####           ####     #### ####     ###    ####     ####  ####     #### ####            ####
 ###           ####     #### ####     ###    ####     ####  ####     ####  ###            ####
  ###      ##  ####     ####  ###    ####    ####     ####  ####     ####   ###      ##   ####
   ###    ##   ####     ####   ###########   ####     ####  ####     ####    ###    ##    ####
      ###     ######    #####    ##    #### ######    ###########    #####      ###      ######
                                                                                              
得到下一关地址: channel

posted on 2009-05-11 16:54 李现民 阅读(2144) 评论(4)  编辑 收藏 引用 所属分类: python

评论

# re: Python Challenge lv5: peak hell[未登录] 2011-06-03 20:14 simon

你好,又来问问题了。

这题中,如何知道要使用 pickle 呢?
那个文件 banner.p 是代表该文件应当用 pickle 来读取吗?  回复  更多评论   

# re: Python Challenge lv5: peak hell 2011-06-04 11:57 李现民

@simon
不,其实这个不容易看出来, 是因为网页的名字叫peak.html,peak与pickle谐音,很扯的理由, 哈哈  回复  更多评论   

# re: Python Challenge lv5: peak hell 2012-06-02 17:29 coaku

是peak hell 与pickle 比较接近吧 :)@李现民
  回复  更多评论   

# re: Python Challenge lv5: peak hell 2012-07-25 15:20 paroalto

你的输出结果有问题。是因为使用参数时,没有初始化  回复  更多评论   


只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理