【Python基礎講座3】random.randint()の乱数とdictionary(辞書)を使って、幸運を呼ぶおみくじシステムを作ってみよう

今回の学習内容

Python基礎講座の3回目です。
この講座の目的などは1回目を読んでください。

内容としては3回目が一番簡単になりました。
これまでの内容が難しかったな、って人も今回は大丈夫だと思うので挑戦してみてください。

初心者の方にはとにかくコードを実行してみてほしいです。
そして一部コードを変えてプログラムの変化を確認してみてください。
あまり意味が分からなくとも、動かしているうちになんとなく「こんな感じで動くんだ」って感覚がつかめてきます。

今回の学習内容は以下です。
それぞれ解説内で解説していきます。

  • importでモジュールをインポート
  • random.randint()を使って乱数を生成
  • dictionary(辞書)型を使用

作成システムの仕様

今回の仕様は以下です。

  • 実行すると一度だけおみくじを引く
  • おみくじの結果は、’凶’, ‘末吉’, ‘吉’, ‘中吉’, ‘大吉’の5種類とする
  • 大吉の場合’大吉’:’今日は最高の1日になるよ!’と表示する
  • 中吉の場合’中吉:今日はついてる!’と表示する
  • 吉の場合、’吉:いいね!’と表示する
  • 末吉の場合、’末吉:今日はまあまあだね!’と表示する
  • 凶の場合、’凶:たまにはこんな日もあるさ!’と表示する
  • 大吉が出る確率は80%とする
  • 中吉が出る確率は5%とする
  • 吉が出る確率は5%とする
  • 末吉が出る確率は5%とする
  • 凶が出る確率は5%とする

大吉が出る確率は80%です。
私は占いの結果に引っ張られて気分が上下するので、大吉が出れば幸せに過ごせます笑
同じように占いの結果に気分が引っ張られる方は1日1回これで幸せを呼び込みましょう!笑

実行結果は以下のようになります。

コード

import random

OMIKUJI = ['凶', '末吉', '吉', '中吉', '大吉']
FORTUNE = {'凶':'たまにはこんな日もあるさ!',
           '末吉':'今日はまあまあだね!',
           '吉':'いいね!',
           '中吉':'今日はついてる!',
           '大吉':'今日は最高の1日になるよ!'}
DAIKICHI = 4

result = random.randint(0, 19)
if result >= DAIKICHI:
  result = DAIKICHI
omikuji = OMIKUJI[result]
print("今日の運勢は...")
print(f"{omikuji} : {FORTUNE[omikuji]}")

解説

1行目

この講座で初めてimportを使っているので1つ1つ説明します。

まずimportとは、モジュールをインポートするために使います。
importは直訳すると「輸入する」なので、取り込むくらいのイメージでOKです。

次はモジュール。
モジュールとは関数(メソッド)やクラスなどをまとめて記述したファイルのことです。
メソッドは第2回で解説しましたね。
メソッドを呼ぶことで、まとまった一連の処理が行えるのでした。
この便利なメソッドをたくさん用意してくれているのがモジュールです。

つまり、import randomと書くことでrandomモジュールを取り込むことができます。
randomの中にはランダムな数字を生成するための便利なメソッドが用意してあります。
用意されたメソッドを使うことで簡単に開発を進めることができます 。
今回はその中のrandint()というメソッドを使います。

3行目~9行目

定数を定義しています。
FORTUNEが今回の学習内容である辞書型になります。

辞書型とは、keyとvalueを組み合わせたデータを保持する型です。
こんな感じのデータになります。{key1:value1,key2:value2,key3:value3}

今回のコードの’大吉’:’今日は最高の1日になるよ!’で説明すると、’大吉’の部分がkeyで、後半の’今日は最高の1日になるよ!’が’大吉’に紐づいたvalueになります。
keyというのは重複しない一意の値という意味です。

まとめると、FORTUNEさんに’大吉’と言えば、’今日は最高の1日になるよ!’と返事をしてくれます。
‘中吉’と言えば’今日はついてる!’という返事になります。
辞書の使い方がなんとなく分かってきたでしょうか。

11行目

11行目はresult = random.randint(0, 19)です。
randomについては1行目で説明しましたが、randomというメソッドを集めた便利なファイルの中のrandintを呼んでいます。

randintとは指定した値の範囲にある整数を返します。
つまり、0~19の20種類の整数の中からランダムに値を1つ生成します。
そして生成した値をresultに保持しています。

このようなある範囲の数値から任意に取り出した数値のことを乱数といいます。
日常生活では聞きなれない言葉ですが、この業界にいるとよく耳にするので覚えておいてください。

12行目~14行目

ここで大吉が出やすいように操作しています。

前庭として、3行目のOMIKUJI = [‘凶’, ‘末吉’, ‘吉’, ‘中吉’, ‘大吉’]と運勢をリストで保持しているので、OMIKUJIに0を渡すと凶が返ってくる、1を渡すと末吉が返ってくる、・・・・4を渡すと大吉が返ってくるデータの構造となっています。

12・13行目で4以上の値の場合は結果が全て4なるようにしています。
つまり生成する乱数のうち4~19の16種類は大吉となります。
20種類のうちの16種類ですので、16/20*100=80%の確立で大吉です!
その他の運勢はそれぞれ20種類のうちの1種類のみですので、1/20*100=5%となります。

15行目~16行目

あとは結果を表示するだけです。

最後に

以上、第3回目でした。

分かりにくいところや「もっとこうしてほしい」などのご意見がありましたら、ツイッターから連絡いただけると幸いです。
質問に関してもお気軽にお問い合わせください。

以下の記事で応用的な内容を公開しています。
今回の内容が簡単だった人は挑戦してみてください

私は独学で以下の本からPythonを学びました。
上が初級者向けで下が中級者向けといった感じです。
気が向いたら立ち読みでもしてみてください。

コメント

タイトルとURLをコピーしました