欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

python challenge 5 博客分类: python PythonF# 

程序员文章站 2024-02-04 11:14:04
...
第五题,查源码,有一句peak hell sounds familiar ? 这个问题估计难倒1摩尔的PYTHON初学者,当然包括我。直接上网查前人成果,答案原来是pickle。pickle和peak hell发音很像吗?python challenge 5
            
    
    博客分类: python PythonF#   上网查了查,pickle是PYTHON的序列化模块,提供PYTHON对象的序列化与反序列化。

网页源码中还有一个<peakhell src="banner.p"/>,打开banner.p后又看到一堆mess,应该是对这堆mess进行反序列化。反序列化出来的对象是个list,如下(部分):
list: [[(' ', 95)], [(' ', 14), ('#', 5), (' ', 70), ('#', 5), (' ', 1)], [(' ', 15), ('#', 4), (' ', 71), ('#', 4), (' ', 1)], [(' ', 15), ('#', 4), (' ', 71), ('#', 4), (' ', 1)], [(' ', 15), ('#', 4), (' ', 71), ('#', 4), (' ', 1)], [(' ', 15), ('#', 4), (' ', 71), ('#', 4), (' ', 1)], [(' ', 15), ('#', 4), (' ', 71), ('#', 4), (' ', 1)], [(' ', 15), ('#', 4), (' ', 71), ('#', 4), (' ', 1)], [(' ', 15), ('#', 4), (' ', 71), ('#', 4), (' ', 1)], [(' ', 6), ('#', 3), (' ', 6), ('#', 4), (' ', 3), ('#', 3), (' ', 9), ('#', 3), (' ', 7), ('#', 5), (' ', 3), ('#', 3), (' ', 4), ('#', 5), (' ', 3), ('#', 3), (' ', 10), ('#', 3), (' ', 7), ('#', 4), (' ', 1)], [(' ', 3), ('#', 3), (' ', 3), ('#', 2), (' ', 4), ('#', 4), (' ', 1), ('#', 7), (' ', 5), ('#', 2), (' ', 2), ('#', 3), (' ', 6), ('#', 4), (' ', 1), ('#', 7), (' ', 3), ('#', 4), (' ', 1), ('#', 7), (' ', 5), ('#', 3), (' ', 2), ('#', 3), (' ', 5), ('#', 4), (' ', 1)], [(' ', 2), ('#', 3), (' ', 5), ('#', 3), (' ', 2), ('#', 5), ('...
这下又要找规律了。在网上找了点提示,每个子list中的元组中的数字之和都是95,而且又有空格和#,很有可能是将空格和#用来排版画图,数字是空格和#打印的次数。于是
import pickle

if __name__ == '__main__':
    
    f = open('5.txt')
    
    text = f.read()
    
    obj = pickle.loads(text)
    
    for list in obj:
        print(''.join(t[0] * t[1] for t in list))
    
    f.close()

打印出由#组成的channel的图像,channel就是过关答案了。
学习到了python中用什么做序列化操作。
相关标签: Python F#