昊漫玉 发表于 2017-4-22 11:26:13

python challenge 5

第五题,查源码,有一句peak hell sounds familiar ? 这个问题估计难倒1摩尔的PYTHON初学者,当然包括我。直接上网查前人成果,答案原来是pickle。pickle和peak hell发音很像吗?上网查了查,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 * t for t in list))
f.close()

打印出由#组成的channel的图像,channel就是过关答案了。
学习到了python中用什么做序列化操作。
页: [1]
查看完整版本: python challenge 5