2011年02月19日

peak hell

Pythonchallenge 5 【peak hell】

ネタバレ注意


































これはフォーラムのヒント見ないと分からなかった.


peak hell → 【píːk hél】

【píkl】 → pickle



モジュールのpickleを使います.


そもそもpickleモジュールを知らなかったら解けるはずがない.


pickleというのは変数とか配列とか辞書とかリストとか、データ構造をpickleファイルとして保存したりpickleファイルから変数とか配列とか辞書とかリストとかを復元?するもの.




問題ページのソースを見てみるとbanner.pのリンク先がある.



banner.pの中身を見てみるとpickleでググった時に見たようなファイル内容なのでこれがpickleファイルかなと気づく.







import pickle,urllib,os
h = urllib.urlopen('http://www.pythonchallenge.com/pc/def/banner.p')
pick = h.read()
f = open('tmp.txt','w')
f.write(pick)
f.close()
f = open('tmp.txt','r')
tmp = pickle.load(f)
f.close()
os.remove("tmp.txt")
for i in tmp:
law = ' '
for x,y in i:
law += x*y
print law

-------
import urllib

urllib.urlopen(x) returns y
URLアドレスxをurllibオブジェクトyとして返す

y.read() returns z
urllibオブジェクトyのURL先の内容を文字列zに格納して返す
-------
open(x,y) returns z
ファイルxをy(read:r,write:w)モードで開いて(読み取り、書き込み)可能にしてzとして返す

z.write(x)
zに文字列xを書き込む

z.close()
zを閉じる
-------
import pickle

pickle.load(x) returns y
pickleファイルxの内容をyに格納して返す.xは読み取り可能にする必要あり

おまけ
pickle.dump(x,y)
yにデータ構造xをpickleファイルとして書き込む.yは書き込み可能にする必要あり
------
import os

os.remove(x)
ファイルxを削除する



この問題は出力がなかなか面白い





この記事へのコメント

name:

mail:

HP:

comment:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバックURL
http://blog.seesaa.jp/tb/186741026

この記事へのトラックバック
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。