2011年7月3日日曜日

開発環境

  • Mac OS X Snow Leopard (OS)
  • WingIDE
  • Script言語: Python

『初めてのコンピュータサイエンス』(Jennifer Campbell, Paul Gries, Jason Montojo, Greg Wilson 著、長尾 高弘 訳、オライリー・ジャパン、2010年、ISBN978-4-87311-463-7)の8章(ファイルの処理), 8.8(練習問題), 2を解いてみる。

 

2.

コード

def read_weather_data(r):
    fields=(
        ((4,int),(2,int),(2,int)),
        ((2,int),(2,int),(2,int)),
        ((2,int),(2,int),(2,int)),
        ((6,float),(6,float),(6,float))
        )
    result=[]
    for line in r:
        start=0
        record=[]
        for i in fields:
            result_1=[]
            for (width,target_type) in i:
                text=line[start:start+width]
                field=target_type(text)
                result_1.append(field)
                start+=width
            record.append(result_1)
        result.append(record)
    return result

用意したファイル

python_sample_8_3

入出力結果(Python Shell)

プログラムで、各レコードをタプルのタプルに変換す関数の方が使いやすい理由は、各レコードの各値(日付、緯度、軽度、データ)にインデックスを指定することで、レコードから順に数えることなく一発でアクセスできること。

Python、まだ慣れないせいか、他の言語に比べて一問解くための学習時間が長い。。

0 コメント:

コメントを投稿