【Python勉強会】運試し!?おみくじプログラムを作ってみる

どうも!リョクちゃです!

だいぶ遅れての更新になりますが、あけましておめでとうございます。

本年も変わらず自身の学んできた上での経験や知識をメモとして発信・共有していきます!

さて、新年1発目は、Pythonでおみくじアプリを作ってみることにしました。

以前にVBでは作っていたのですが、それよりも簡単に、コンソール上でおみくじの結果が

わかるアプリを簡単に作ってみることにします。

これができたらグラフィカルなモノに仕上げてもいいかなと思っています。

ちなみに前回(去年)の記事は、こちら

iniファイル、アプリケーションを作る際にあらかじめ設定値を持たせたいときがあると思います。そんなとき、最近だとJSONやXMLなどが扱われているかと思いますが、まだまだiniファイルも活用されています。今回は、Pythonでもiniファイルから設定値を読込む方法を紹介していきます。

完成イメージ

今回作成するおみくじアプリ?の完成形は、下図のような形になります。

コンソールウィンドウ上でPythonで作成したプログラムを実行すると、

今日の運勢が表示されるといった、いたってシンプルなプログラムです。

シンプル故に簡単に作れるので、ちょっと凝らしを入れて、作成をしていきます。

おみくじアプリの構成

下図のようなファイル構成にします。

メインアプリは、実際にコンソールウィンドウで実行するアプリを指します。

メインアプリは、運勢などが格納されたclsOmikuji.pyに対して、

今日の運勢を問い合わせます。

問い合わせが来たら、clsOmikuji.pyは今日の運勢を返します。

上図のような順番で処理が行われるようにしていきます。

運勢クラスを作成する

まずは、運勢を格納するクラスを作成していきます。

運勢クラスは、特に処理をするわけではなく、

データを格納しておくだけのクラスとして利用します。

そのため、データクラスとして作成をしていきます。

スポンサーリンク




データクラスとは?

データクラスとは、データを保持するクラスのことを呼びます。

出典:【Python】データクラスの定義と使い方

YUMARU BLOG

データクラスを使うには、

でdataclassをimportします。

通常のクラスを宣言する要領で、class クラス名の上に@dataclassと記述します。

classを修飾する形で宣言します。

データクラスのクラス名はOmikujiとします。

このクラスには、運勢データを格納します。

今回は、凶、小吉、中吉、大吉の運勢を扱います。

それぞれの運勢が選ばれたときに、文言を添えて返すように、それぞれの運勢に対して

文言を配列として持たせておきます。

各運勢と文言は1:1の関係になるように、辞書型として宣言し、代入しておきます。

これで運勢クラスの準備ができました。

メインのアプリを作成

次にメインアプリを作成していきます。

先ほど作成した運勢クラスを使うために、まずは運勢クラスをimportしておきます。

肝心な運勢を引く際の処理はどうするかというと、

今回は、1~9の数字からそれぞれ運勢を割り当てて、ランダムで選ばれた数字に対して、

運勢を返すようにしていきます。

割り当てはこんな感じにしました。

  • 1 : 大吉
  • 2 : 中吉
  • 3 : 小吉
  • 4 : 吉
  • 5 : 吉
  • 6 : 吉
  • 7 : 小吉
  • 8 : 中吉
  • 9 : 凶

これらの数字をインプットとして、運勢クラスから運勢を問い合わせ、運勢を引きます。

運勢を引く行為については、メインアプリ内で関数として宣言をしておきます。

引数には、ランダムに選ばれた数字が渡されます。

これを基に、先ほどの割り当てから運勢を引くようにします。

それぞれの運勢に対して、文言を獲得する処理も加えます。

文言は運勢クラスにあるので、

omikujiBoxという変数に対して、Omikuji()をインスタンス化させます。

インスタンス化させたomikujiBoxから運勢を引き当てます。

先ほど、運勢クラスでは各運勢に対して文言を複数持たせている運勢もあり、

そうした場合は、ランダムで文言を選べるようにしておきます。

randomモジュールをimportし、

num変数に各運勢の個数の範囲内でランダムな数値を返します。

最後におみくじの結果をprint()で出力するようにします。

最後にdrawOmikujiをMainOmikuji内で呼び出します。

drawNumber変数にはランダムな数値を1~9の範囲内で返します。

これを基に、今日の運勢を引きます。

実行するには、保存した場所でコンソールウィンドウ(コマンドプロンプト)より

python MainOmikuji.py

と実行すると、おみくじを引くことができます。

まとめ

コンソールウィンドウでおみくじを引くアプリを作成してみました。

少し凝らして作ってみたモノの、まだまだデータクラスを

十分に活用できていないかもしれないです。

おみくじを引くだけなら、もっと簡単に作れますが、

今回はデータクラスと、それを呼び出す別ファイルを作成し、

複数ファイルを用いたおみくじアプリを作ってみました。

もう少し鍛錬を積んで、データクラスを使えるようになりたいです。

何かしらの参考になれば嬉しいです。

最後までお読みいただき、ありがとうございます。

・こちらの書籍を参考にPythonの理解を深めました。

スポンサーリンク