The Python Challenge Lv.5
作者 Ross Wan on 2011/08/24
Lv.5
打开第5关的网页,显示的是一个山丘的图片,提示”pronounce it”???完全没有头绪.再看看网页的源代码,发现一个”可疑”的标签:
<peakhell src=”banner.p”/>
下载到 banner.p 这个文件,用文本编辑器打开,又是一堆字符,似有似无规律的字符.再看看网页源代码里的一行注释:
<!– peak hell sounds familiar ? –>
peak hell 的发音似什么?完全没有头绪……最后,Google到一点提示,确是无奈之举:< 原来关键是 pickle,它的发音跟 ‘peak hell’ 有点相似.真是晕倒~~~既然有这个关键的提示,下面就容易得多了:
import pickle
if __name__ == '__main__':
f = open('banner.p', 'rb')
obj = pickle.load(f)
print('Objcet type: %s\n\n' %type(obj))
print(obj)
f.close()
首先,取得的对象是一个 list,而list的元素是由二元表列组成,而且,二元表列的第一个元素是” “或者”#”,第二个元素是数字.可猜测这是一个打印列表:
import pickle
if __name__ == '__main__':
f = open('banner.p', 'rb')
obj = pickle.load(f)
f.close()
new_file = open('new_file.txt', 'w')
for line in obj:
new_file.write(''.join([x*y for x,y in line]))
new_file.write('\n')
new_file.close()
上面的代码会将打印的字符写入 “new_file.txt” 这个文件里,不直接显示在系统 console 里主要是因为因某些 console 会自动断行,而显示不到最终的结果.
用编辑器打开(记得关闭编辑器的自动换行),会出现一个漂亮的图形,结果显而易见:
##### ##### #### #### #### #### #### #### #### #### #### #### #### #### #### #### ### #### ### ### ##### ### ##### ### ### #### ### ## #### ####### ## ### #### ####### #### ####### ### ### #### ### ### ##### #### ### #### ##### #### ##### #### ### ### #### ### #### #### ### ### #### #### #### #### ### #### #### ### #### #### ### #### #### #### #### ### ### #### #### #### #### ## ### #### #### #### #### #### ### #### #### #### #### ########## #### #### #### #### ############## #### #### #### #### ### #### #### #### #### #### #### #### #### #### #### #### ### #### #### #### #### #### #### ### #### #### #### ### #### #### #### #### ### #### ### ## #### #### ### #### #### #### #### #### ### ## #### ### ## #### #### ########### #### #### #### #### ### ## #### ### ###### ##### ## #### ###### ########### ##### ### ######
可见,下一关的网址是: http://www.pythonchallenge.com/pc/def/channel.html
Have fun :)