Python挑戰遊戲( PythonChallenge)闖關之路Level- 5

楓奇發表於2017-08-31

時隔兩個月, 又重新回來寫部落格了

今天重新來做這個挑戰題目


首先入口地址:http://www.pythonchallenge.com/pc/def/peak.html

開啟來看, 沒錯,你沒有看錯,只有一副畫


然後畫的下面 有一句話  "pronounce it",   什麼鬼! 它的發音???

只看這個看不出來什麼意思.


那麼按照以往的經驗, 直接F12 看網頁原始碼吧

<html>  
<head>  
  <title>peak hell</title>  
  <link rel="stylesheet" type="text/css" href="../style.css">  
</head>  
<body>  
<center>  
<img src="peakhell.jpg"/>  
<br><font color="#c0c0ff">  
pronounce it  
<br>  
<peakhell src="banner.p"/>  
</body>  
</html>  
  
<!-- peak hell sounds familiar ? -->  

這樣明顯看到有一個檔案  banner.p, 直覺認為需要開啟它 :http://www.pythonchallenge.com/pc/def/banner.p

這樣我們看到了一個亂碼的文字檔案

接著這個原始碼下面有一句提示“peak hell sounds familiar ”!   這一句話就比較重要了

前面說他的發音, 這裡提示說, 發音和“peak hell ” 類似,   再結合python的知識, 這一關應該是要用到 pickle 這個包了(我不會告訴你我是檢視別人的)!


好了,分析工作完成,將這個檔案內容下載到本地,然後執行解析程式如下(報告老闆,他是抄的):

#!/usr/bin/python
# coding:utf-8

import pickle

f=open('1.txt')
for line in pickle.load(f):
	print ''.join([x[0] * x[1] for x in line])
	
f.close()
然後得到了下面的結果:

                                                                                               
              #####                                                                      ##### 
               ####                                                                       #### 
               ####                                                                       #### 
               ####                                                                       #### 
               ####                                                                       #### 
               ####                                                                       #### 
               ####                                                                       #### 
               ####                                                                       #### 
      ###      ####   ###         ###       #####   ###    #####   ###          ###       #### 
   ###   ##    #### #######     ##  ###      #### #######   #### #######     ###  ###     #### 
  ###     ###  #####    ####   ###   ####    #####    ####  #####    ####   ###     ###   #### 
 ###           ####     ####   ###    ###    ####     ####  ####     ####  ###      ####  #### 
 ###           ####     ####          ###    ####     ####  ####     ####  ###       ###  #### 
####           ####     ####     ##   ###    ####     ####  ####     #### ####       ###  #### 
####           ####     ####   ##########    ####     ####  ####     #### ##############  #### 
####           ####     ####  ###    ####    ####     ####  ####     #### ####            #### 
####           ####     #### ####     ###    ####     ####  ####     #### ####            #### 
 ###           ####     #### ####     ###    ####     ####  ####     ####  ###            #### 
  ###      ##  ####     ####  ###    ####    ####     ####  ####     ####   ###      ##   #### 
   ###    ##   ####     ####   ###########   ####     ####  ####     ####    ###    ##    #### 
      ###     ######    #####    ##    #### ######    ###########    #####      ###      ######
                                                                                               

也就是說下一關的地址是:http://www.pythonchallenge.com/pc/def/channel.html

關於它本關更多的解決方案:http://wiki.pythonchallenge.com/index.php?title=Level4:Main_Page


那現在回頭來看一下 pickle 這個包是什麼意思

百度一下,得到這樣的答案

加工資料的,可以用來存取結構化資料。舉個例子:

一個字典a = {'name':'Tom','age':22},用pickle.dump存到本地檔案,所存資料的結構就是字典,而普通的file.write寫入檔案的是字串。讀取時,pickle.load返回的是一個字典,file.read返回的是一個字串。如下程式碼:

1
2
3
4
5
6
7
import pickle
= {'name':'Tom','age':22}
with open('text.txt','wb') as file:
    pickle.dump(a,file)
with open('text.txt','rb') as file2:
    = pickle.load(file2)
print(type(b))

得到的b的型別是字典,b和a是等價的,也就是說pickle可以把字典、列表等結構化資料存到本地檔案,讀取後返回的還是字典、列表等結構化資料。而file.write、file.read存取的物件是字串。這個叫做持久化資料存貯

這個東東看著(bu)好(ming)高(jue)大(li)上的樣子,有木有!

python的pickle模組實現了基本的資料序列和反序列化。通過pickle模組的序列化操作我們能夠將程式中執行的物件資訊儲存到檔案中去,永久儲存;通過pickle模組的反序列化操作,我們能夠從檔案中建立上一次程式儲存的物件。


一些更多pickle的知識:http://blog.csdn.net/qiqiyingse/article/details/77747777



本關小結:

本關收貨最大的一點其實就是了解到了 pickle這個模組.

讓我們發散思維一下, 現在密碼那麼多,總想把他找個地方全部記下來, 那麼使用pickle的dump方法將密碼存貯起來,

等到自己忘記了, 在找回來,起碼這種方式,被別人拿到,他也不知道怎麼破解!(程式設計師的思維,哈哈哈!)




相關文章