Nokiaに関係ある事ない事をつらつらと。
スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
705NKでプログラミング その8
過去2回では、「パケット定額プラン無し」、「パケットし放題」それぞれのパケット料金を計算するスクリプトを作りました。今回はこの2つを一緒にしたスクリプトを書いてみようと思います。プログラムの流れとしては、まず「定額プラン無し」と「パケットし放題」のどちらで料金を計算するか選択し、その後バイト数を入れると最初の選択に応じたパケット料金が表示されるようにします。

import appuifw

result = 1
while result:

   choices = [unicode("定額プラン無し","utf-8"),
   unicode("パケットし放題","utf-8")]

   option = appuifw.popup_menu(choices,unicode("パケットプラン選択","utf-8"))

   if option is not None:

      data = appuifw.query(unicode("データ送受信量(KB)","utf-8"), "number")

      if data is not None:

         packet = data * 1024 / 128

         if option == 0:
            name = unicode("定額プラン無し","utf-8")
            charge = packet * 0.2
         elif option == 1:
            name = unicode("パケットし放題","utf-8")
            if packet <= 12250:
               charge = 980
            elif packet >= 52500:
               charge = 4200
            else:
               charge = packet * 0.08

         result = appuifw.query(name + "¥n" 
               + unicode("パケット数:","utf-8") + "¥n"  
               + str(packet) + "pkt" + "¥n" 
               + unicode("パケット料金:","utf-8") + "¥n"
               + str(int(charge)) + unicode("円","utf-8"), "query")


Cなどのプログラム言語と大きく異なるのが、Pythonには制御文に括弧とかが無いことです。Pythonでは、ループの範囲や実行文のまとまりを「ブロック」と呼び、ブロックはインデントで表現します。今回のスクリプトでは、制御文がネストしていますが、これもインデントで表現することができます。最初は括弧などでブロックを括っていないので、何となく不信感が沸くと言うか、気持ちが悪かったのですが、考えてみれば括弧の付け忘れなどが無いし、強制的なインデントでスクリプトが見やすくなるので、慣れればこちらの方が良いかもしれません。

折角なんで、少しスクリプトの体裁も整えてみました。今まではスクリプトが1回だけ実行結果を返すとすぐに終了してしまいましたが、今回は実行結果を表示後、最初の入力画面に再び戻るようなループ構造にしました。それが、

result = 1
while result:

の部分から

result = ...

の部分です。query()ファンクションでは、ダイアログで「キャンセル」を選択すると「None」を返します。そこでwhileループをこんな感じで使うと、resultにNoneが入らない限りスクリプトがループします。

それではスクリプトを実機にコピーして実行してみます。

nokimani071102_001.jpg

スクリプトを実行すると、まず最初にプラン選択のポップアップメニューが表示されます。ここでは「定額プラン無し」を選んでみました。

nokimani071102_002.jpg

どちらかを選ぶと、今まで通りバイト数を入力するダイアログが表示されます。5MBを入れてみます。

nokimani071102_003.jpg

するとこんな感じでプラン名とパケット数、パケット料金が表示されます。

nokimani071102_004.jpg

続けて「パケットし放題」で同じように計算させた結果がこちらです。

でもスクリプトを書いてからふと思ったんですが、パケットプランが2つしか無いんだったらポップアップで選ぶよりも、結果を同時に表示した方が使いやすいですね。ってことでそのスクリプトがこちらです。

import appuifw

result = 1
while result:

   data = appuifw.query(unicode("データ送受信量(KB)","utf-8"), "number")

   packet = data * 1024 / 128

   charge0 = packet * 0.2

   if packet <= 12250:
      charge1 = 980
   elif packet >= 52500:
      charge1 = 4200
   else:
      charge1 = packet * 0.08

   result = appuifw.query(unicode("パケット数:","utf-8") + "¥n" 
             + str(packet) + "pkt" + "¥n" 
             + unicode("プラン無し:","utf-8") 
             + str(int(charge0)) + unicode("円","utf-8",) + "¥n" 
             + unicode("パケし放題:","utf-8") 
             + str(int(charge1)) + unicode("円","utf-8"), "query")


このスクリプトを実行すると

nokimani071102_005.jpg

今までどおりバイト数入力のダイアログが表示されます。

nokimani071102_006.jpg

結果は「プラン無し」と「パケし放題」の両方が同時に表示されます。

こちらのほうがスクリプトもすっきりしているし、結果も見やすいですね(苦笑)。まぁ、しばらくはスクリプトの練習なんで、色々試してみたいと思います。
スポンサーサイト

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

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