Nokiaに関係ある事ない事をつらつらと。
スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
705NKでプログラミング その10
前回は「パケットし放題」をファンクションで定義しました。と言うことで、今回は引き続き全てのパケットプランをファンクションで定義し、それらをモジュールとしてまとめてみたいと思います。
と言っても、さすがに全てのソーススクリプトを表示するとかなり長くなるので、テキスト形式で別ファイルにしました(本当は拡張子を.pyにしなければならないんですが、FC2ではアップロードできないので…)。下のリンクをクリックすると表示されるか、ダウンロードすることができます。

ソーススクリプト

これで、ソフトバンクから提供されている全てのパケットプランをファンクションにすることができました。ところでこのソースの最後のファンクションは、それまでのパケットプランを計算するファンクションとはちょっと趣きが変わっています。

def make_packet_master(packet, acc=0): 
    master = (packet_noplan(packet, acc),packet_shihoudai(packet, acc),packet_teigaku_light(packet, acc),packet_teigaku_orange(packet, acc),packet_teigaku_blue(packet, acc),packet_teigaku_full(packet, acc),packet_teigaku_biz(packet, acc),
packet_waribiki_10(packet, acc),packet_waribiki_30(packet, acc),packet_waribiki_60(packet, acc),packet_waribiki_90(packet, acc),(0,0,0))

    return master


これは、ファンクションにした全てのパケットプランにパケット数と接続形態を代入し、まとめてひとつの変数に値を返すというファンクションです。最後の(0,0,0)は、NullとかEOFの代用として使用しました。メインスクリプトでは、このmake_packet_masterファンクションとWhileループを使って必要なデータを読み出しているのですが、そのループを抜け出すための条件となっています。本当はもっと良いやり方があるのでしょうが、他に思いつかなかったもので…(汗)。で、この出力結果がどうなるかと言うと、

((0,パケ割引無し,2000),(0,パケットし放題,4200),…,(2,パケット90,9000),(0,0,0))

のような二次元配列のタプルとなります。従って、特定のデータを取り出したい場合には、masterという変数に代入したとすると、master[1][2]のような形で取り出すことが可能になります。

しかし、なぜわざわざこんなことをするのでしょうか?例えばメインスクリプトから各パケット計算ファンクションを呼び出すとなると、いちいちファンクションを呼び出すための記述を書かなければならなくなります。例えばホワイトプランはパケットプランが2つしかないのでそれぞれ呼び出しても大した手間にはならないのですが、ブループランでは共通プランを含めて9つもあるので、9回もファンクションを呼び出さねばならず、そのためのスクリプトが結構見難くなってしまいます。また、パケットプランが追加または削除された場合には、その度にメインスクリプトに手を加えなければなりません。でも、make_packet_masterを使えば、全てのパケット計算を、1回のファンクションコールで済ませることができます。特定のデータを選別・抽出するためのパラメータは戻り値に含まれていますので、後はデータを上手く読み出すルーチンさえ考えてやればかなり手間を省くことができるようになり、スクリプトも非常に簡潔になります。また、パケットプランに変更があった場合でも、make_packet_masterの中の記述を変えるだけで済み、メインスクリプトに手を加える必要が無くなるという利点もあります。

さて、これらのファンクション群をオリジナルモジュールにする方法ですが、これは特別なことをするわけではなく、適当な名前を付けて保存するだけでOKです。私はsb_charge.pyと名前を付けて保存をしました。

さて、これでパケット計算スクリプトに必要なモジュールが完成しましたので、次回はメインのスクリプトを作成することにします。

スポンサーサイト

テーマ:Nokia - ジャンル:携帯電話・PHS

コメント
この記事へのコメント
コメントを投稿する
URL:
Comment:
Pass:
秘密: 管理者にだけ表示を許可する
 
トラックバック
この記事のトラックバックURL
この記事へのトラックバック
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。